has_many通过条件不起作用

时间:2013-04-26 16:24:10

标签: ruby-on-rails ruby-on-rails-3 activerecord associations

我有一个模型成绩和一个模型用户。在成绩和用户之间是通过协作进行多对多关联。

在user.rb

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

有效,但我只需要获得属性为“archived”= false

的成绩

我试过了

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

但它需要所有等级,换句话说,条件被忽略。

我可以在这种情况下加入我的合作,但协作与成绩和学校有多态关系,而且学校没有存档字段,这些都会导致错误。

有什么想法吗?

2 个答案:

答案 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]