我有一个模型成绩和一个模型用户。在成绩和用户之间是通过协作进行多对多关联。
在user.rb
中has_many :grades, through: :collaborations, source: :user
有效,但我只需要获得属性为“archived”= false
的成绩我试过了
has_many :grades, through: :collaborations, source: :user, conditions: [' archived = ? ', false]
但它需要所有等级,换句话说,条件被忽略。
我可以在这种情况下加入我的合作,但协作与成绩和学校有多态关系,而且学校没有存档字段,这些都会导致错误。
有什么想法吗?
答案 0 :(得分:0)
尝试使用此
has_many :grades, through: :collaborations, source: :user, :conditions => { archived: false}
或
has_many :grades, through: :collaborations, source: :user, :conditions => { 'grades.archived' => false }
答案 1 :(得分:0)
这是解决方案。显然,因为协作是一种多态关系,您需要指定source_type
has_many :grades, through: :collaborations, source: :owner, source_type: "Grade", conditions: ['archived = ? ', false]