首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >has_many通过,但条件不起作用

has_many通过,但条件不起作用
EN

Stack Overflow用户
提问于 2013-04-27 00:24:10
回答 2查看 225关注 0票数 0

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

在user.rb中

代码语言:javascript
复制
has_many :grades, through: :collaborations, source: :user

工作,但我只需要获得属性为"archived“= false的分数

我试过了

代码语言:javascript
复制
has_many :grades, through: :collaborations, source: :user, conditions: [' archived = ? ', false]

但是它需要所有的分数,换句话说,条件被忽略了。

我可以在我的协作中加入这个条件,但是协作与年级和学校存在多态关联,并且学校没有存档字段,这些都会导致错误。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-04-27 05:17:48

试着使用这个

代码语言:javascript
复制
has_many :grades, through: :collaborations, source: :user, :conditions => { archived: false}

代码语言:javascript
复制
has_many :grades, through: :collaborations, source: :user, :conditions => { 'grades.archived' => false }
票数 0
EN

Stack Overflow用户

发布于 2013-04-27 16:26:14

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

代码语言:javascript
复制
 has_many :grades, through: :collaborations, source: :owner, source_type: "Grade", conditions: ['archived = ? ', false]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16241015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档