对于一个初学者的问题,我深表歉意,但是我想将自己想开始的项目的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/

10-16 13:33