我有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
答案 0 :(得分:0)
Arel尚未支持或运营商。也许你应该看一下Arel Readme
如果你想使用我想要的范围,我最终总结了两个范围:
where(:name => 'Red Fox') + where(:age > 28)
答案 1 :(得分:-2)
怎么样:
User.joins(:badges).where(:id => [gold.id, silver.id])
希望这有帮助!