Ruby on rails 你经历过很多情况吗

Ruby on rails 你经历过很多情况吗,ruby-on-rails,ruby-on-rails-3,activerecord,associations,Ruby On Rails,Ruby On Rails 3,Activerecord,Associations,我有一个模型等级和一个模型用户。等级和用户之间是通过协作实现的多对多关联 在user.rb中 has_many :grades, through: :collaborations, source: :user 有效,但我只需要获取属性为“存档”=false的成绩 我试着 has_many :grades, through: :collaborations, source: :user, conditions: [' archived = ? ', false] 但是它需要所有的分数,换句话说

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

在user.rb中

has_many :grades, through: :collaborations, source: :user
有效,但我只需要获取属性为“存档”=false的成绩

我试着

has_many :grades, through: :collaborations, source: :user, conditions: [' archived = ? ', false]
但是它需要所有的分数,换句话说,这个条件被忽略了

我可以在这种情况下放入协作,但协作与年级和学校存在多态关联,学校没有存档字段,这会导致错误

有什么想法吗?

试试这个

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


这就是解决办法。显然,因为协作是一种多态关系,所以需要指定源类型

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