2016-07-07 80 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 

但它很可能這是你的目標是矯枉過正的辦法。