如何通过多个关联选择记录?

时间:2011-12-17 03:41:54

标签: sql ruby-on-rails activerecord

我有User has_many Badge s。当我想要检索所有拥有金徽章的用户时,我只想写:

User.joins(:badges).where(:id => gold.id)

但是如何检索所有拥有金徽章和银徽章的用户?我试过了:

User.joins(:badges).where(:id => gold.id).where(:id => silver.id)

显然我得到nil。什么是正确的方法?

澄清:我想要

the users who have at least two badges: gold badge and silver badge

或者你可以说:

the intersection of 
  'users who have gold badge' and 'users who have silver badge'

不是

the users who have a badge which is gold and silver

2 个答案:

答案 0 :(得分:0)

Arel尚未支持或运营商。也许你应该看一下Arel Readme

如果你想使用我想要的范围,我最终总结了两个范围:

where(:name => 'Red Fox') + where(:age > 28) 

答案 1 :(得分:-2)

怎么样:

User.joins(:badges).where(:id => [gold.id, silver.id])

希望这有帮助!