Rails:如何在多个分离度中使用has_many

时间:2016-02-20 15:45:39

标签: ruby-on-rails nested associations

我使用has_many / belongs_to建立了一系列模型关联,如下所示:

User< Company< Project< Task> Employee> Company(通告)。如下:

enter image description here

我已使用Company在两个分离度为2度的模型(例如Taskhas_many :tasks, through: :projects)之间建立关联。

是否也可以通过这种方式将模型与多个(3个或更多)分离度(例如CompanyEmployee)相关联?我可以放弃Company< Employee(因此是通告)协会。

目标是在从employee.company控制器保存新员工时能够使projects可用。

2 个答案:

答案 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)。但这并没有真正解决问题。

就个人而言,我认为保持该公司的合理性更合乎逻辑。员工协会。雇员一词意味着雇用员工的雇主(可能是公司,其他人,自营职业或其他任何雇员)。