如何定义依赖于belongs_to关联的Rails模型id?

时间:2016-07-07 18:25:36

标签: ruby-on-rails ruby postgresql activerecord

我的应用程序中有下一个模型结构:

class Company
  has_many :employees
end

class Employee
  belongs_to :company
end

是否有办法让员工拥有独特的ID(默认主键),具体取决于belongs_to公司关联?

这些应返回不同的Employee模型:

/companies/1/employees/1

/companies/2/employees/1

谢谢!

1 个答案:

答案 0 :(得分:1)

试试sequenced宝石,它完全符合您的要求。不过要考虑一个因素。

您的要求剥夺了Employee id唯一性字段,它需要成为主键。因此,您需要在Employee中使用复合键,即[:company_id, :employee_id]或使用Employee的{​​{1}}字段作为主键但更像是一个slu ..

如果你想要探索复合键方法,有composite_primary_key gem,它旨在支持复合键之上的ActiveRecord关联。我自己还没试过。

根据其文档,您的关联可能看起来像这样:

acts_as_sequenced

但很可能这对你的目标来说是一种过度的方法。