我使用has_many
/ belongs_to
建立了一系列模型关联,如下所示:
User
< Company
< Project
< Task
> Employee
> Company
(通告)。如下:
我已使用Company
在两个分离度为2度的模型(例如Task
和has_many :tasks, through: :projects
)之间建立关联。
是否也可以通过这种方式将模型与多个(3个或更多)分离度(例如Company
与Employee
)相关联?我可以放弃Company
< Employee
(因此是通告)协会。
目标是在从employee.company
控制器保存新员工时能够使projects
可用。
答案 0 :(得分:1)
有可能:
例如:Company
Employee
class Company < ActiveRecord::Base
has_many :projects
has_many :tasks, through: :projects
has_many :employees, through: :tasks
end
Rails通过joins
查询
目标是在从项目控制器保存新员工时,能够在Employee模型中使employee.company可用。
这很确定,因为Employee
已属于Company
答案 1 :(得分:1)
如果没有公司&lt;我不确定你能做到员工协会指定哪个公司雇用了哪个员工。
当然,即使没有公司&lt;员工协会,您仍然可以拨打employee.projects.first.company
之类的内容。但没有直接关联,employee.company
是不可能的。因为员工has_many项目,所以您必须始终指定您所指的项目公司。您可以为Employee类添加一个方法,例如:
def company(project)
project.company
end
并致电employee.company(@project)
。但这并没有真正解决问题。
就个人而言,我认为保持该公司的合理性更合乎逻辑。员工协会。雇员一词意味着雇用员工的雇主(可能是公司,其他人,自营职业或其他任何雇员)。