2012-06-14 25 views
1

我有一個如下關係。has_many通過與基於關係表的條件的關係(Rails 2.3.5)

companies_employee.rb 
belongs_to :employee 
belongs_to :company 
validates_presence_of :role 

employee.rb 
has_many :companies_employees 
has_many :companies, :through => :companies_employees 

company.rb 
has_many :companies_employees 
has_many :managers, :through => :companies_employees, :source => :employee, conditions => {:role => "Manager"} 
has_many :owners, :through => :companies_employees, :source => :employee, :conditions => {:role => "Owner"} 

我的問題是,當它檢查的條件,它試圖找到在員工表中的角色列,但角色列是companies_employees表。 有沒有辦法讓它在這個表中使用這些條件?

回答

2

嘗試這樣:

has_many :managers, :through => :companies_employees, :source => :employee, conditions => ["employees.role = 'Manager"] 
has_many :owners, :through => :companies_employees, :source => :employee, conditions => ["employees.role = 'Owner"] 
+0

這具有完全相同的問題,但仍然嘗試查找的行列中的員工表,當我要的是查找角色列在: companies_employees表。 – Aaronneyer

+0

那麼,將employees.role更改爲companies_employees.role。 – MurifoX

+0

工作很好,謝謝:) – Aaronneyer