2016-07-07 75 views
0

我的模型旁边结构,我的应用程序:如何范围Rails依赖于belongs_to关联的模型ID?

class Company 
    has_many :employees 
end 

class Employee 
    belongs_to :company 
end 

有没有一种方法,使之能够为员工具有唯一的ID取决于belongs_to公司协会(默认值主键)?

这些应该返回不同的员工型号:

/companies/1/employees/1

/companies/2/employees/1

谢谢!

回答

1

尝试sequenced宝石,它完全符合你的要求。有一点需要记住。

您的要求剥夺Employeeid唯一性领域,它需要一个主键。因此,您需要在Employee中使用复合密钥,即[:company_id, :employee_id]或使用Employeeacts_as_sequenced字段不是主键,而更像是一个slug。

为防万一您在探索复合键方法,有composite_primary_key宝石,它旨在支持复合键之上的ActiveRecord关联。虽然我没有尝试过。

根据它的文档,你的协会可以是这个样子:

class Company < ActiveRecord::Base 
    has_many :employees, :foreign_key => [:company_id, :employee_id] 
end 

class Employee < ActiveRecord::Base 
    self.primary_keys = :user_id, :employee_id 
    belongs_to :company 
end 

但它很可能这是你的目标是矫枉过正的办法。