对于一个初学者的问题,我深表歉意,但是我想将自己想开始的项目的ActiveRecord关联起来。
我开始扩展我在Rails方面的知识,并对可用的ActiveRecord关联有点困惑,这是我应该选择的关联以及如何构建模型。
这是一般概念:
您首先要定义一个公司-这是树的第一部分
其次,您需要定义部门。它们应属于相关公司,并具有简单的名称和描述。
最后-员工-每个员工可以在一个部门中,并隶属于一个公司。
我正在寻找的是为公司,部门和员工创建模型的最佳方法,因此我可以将员工分配给正确的公司和部门。
如果您可以为我指明正确的方向,请本书或教程/文章来缓解这些数据库表连接的麻烦,并为项目选择正确的路线!
任何帮助表示赞赏!
最佳答案
似乎直截了当。
您的公司模型应显示以下内容:
has_many :departments
has_many :employees
有人可能会说您可以将雇员更改为“ has_many:employees through::departments”。我不认为这太重要了。
您的部门模型应具有:
belongs_to :company
has_many :employees
您的员工模型应具有:
belongs_to :company
belongs_to :department
如果您将直通部门用于该关系,则从技术上讲,您不需要公司电话。但是,如果执行此操作,则可以运行以下内容:
员工第一公司
员工第一部门
部门第一业务
Department.first.employees.first(请注意,这是复数形式,因为它具有has_many)
Company.first.employees.first(如果您有直通或直接分配,则可以使用)
公司第一部门第一
“ belongs_to”关系表示声明该模型为其所属模型拥有外键的模型。因此,部门属于公司。因此,当您键入,例如,rails生成模型Department company:references ....等时,:company_id将在Department内部创建。
在上面的示例中,您的员工将具有:department_id和:company_id,不过,再次重申,您可以跳过公司之一,只是将其声明为直通,您将通过其所在部门查找员工。
从理论上讲,您也可以为员工使用has_one而不是belongs_to。但是我发现那些更难处理。
关于mysql - Rails ActiveRecord关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28652779/