2013-04-26 66 views
0

我有模型成績和模型用戶。成績和用戶之間通過合作是多對多的關聯。has_many通過條件不起作用

在user.rb

has_many :grades, through: :collaborations, source: :user 

的作品,但我需要得到只與屬性 「歸檔」=假

我tryied

has_many :grades, through: :collaborations, source: :user, conditions: [' archived = ? ', false] 

成績,但它需要所有的等級換句話說,條件被忽略。

我可以把這個條件放在我的合作中,但是合作是與學校和學校有多形聯繫的,一所學校沒有存檔的領域,而這些都會導致錯誤。

任何想法?

回答

0

嘗試使用此

has_many :grades, through: :collaborations, source: :user, :conditions => { archived: false} 

has_many :grades, through: :collaborations, source: :user, :conditions => { 'grades.archived' => false } 
+0

他們不工作:( – vladCovaliov 2013-04-27 08:07:04

0

這是解決方案。顯然,因爲協作是一種多態關係,你需要指定一個source_type

has_many :grades, through: :collaborations, source: :owner, source_type: "Grade", conditions: ['archived = ? ', false]