0

我有一个模型等级和一个模型用户。成绩和用户之间是通过协作实现的多对多关联。

在用户.rb

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

有效,但我只需要获得属性“存档”= false 的成绩

我试过了

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

但它需要所有的成绩,换句话说,条件被忽略了。

我可以把我的合作放在这个条件下,但是合作是与年级和学校的多态关联,并且学校没有存档字段,这会导致错误。

有任何想法吗?

4

2 回答 2

0

尝试使用这个

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

或者

has_many :grades, through: :collaborations, source: :user, :conditions => { 'grades.archived' => false }
于 2013-04-26T21:17:47.503 回答
0

这就是解决方案。显然因为协作是一种多态关系,所以需要指定一个 source_type

 has_many :grades, through: :collaborations, source: :owner, source_type: "Grade", conditions: ['archived = ? ', false]
于 2013-04-27T08:26:14.237 回答