【发布时间】:2018-01-11 20:55:11
【问题描述】:
我希望在 Rails 5 中创建以下模型:
Industry
Department
JobTitle
示例数据:
Industry: Technology, Healthcare, Other
Department: Admin, Customer Support
JobTitle: Account Manager, Accountant
行业是最高级别,部门可以属于一个或多个行业,职称可以属于一个或多个部门。
我在 Rails 中创建了上面的三个模型,我没有的是,给定一个行业和部门,我如何获得所有 JobTitles?
我应该如何存储这种关系,然后如何查询来获取它?
我是否应该创建一个 3 表连接模型,例如:
IndustriesDepartmentsJobTitles
id | industry_id | department_id | job_title_id
这是正确的做法吗?如果是这样,我将如何查询 job_titles 并给出行业 ID 和部门 ID?
【问题讨论】:
-
为什么不使用两个连接表?我猜您在 Industry-Department 和 Department-JobTitle 表中都有 HABTM 关系,如果这是真的,您可以轻松访问您的模型,例如:
job_titles = Industry.first.departments.select do |dep| dep.job_titles end(这是一个粗略的示例)。 -
请考虑,当您添加
belongs_to、has_many或has_and_belongs_to_many时,它会添加访问和修改关联对象的方法,例如:my_industry.departments(其中 my_industry 是 Industry 类对象) .
标签: ruby-on-rails join activerecord ruby-on-rails-5 activemodel