ActiveRecord,其中至少存在x个关联记录

时间:2013-06-27 15:49:44

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

我们假设用户有评论,我希望所有用户都有三条或更多评论。

User.joins(:comments)会给我任何有用户的 一个或多个评论。获得至少三条评论的用户最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

更好的方法可能是使用API​​编写子查询:

subquery = Comment.select("user_id").
                   group(:user_id).
                   having("COUNT(*) >= 3").to_sql
User.where("id IN (#{subquery})")

答案 1 :(得分:0)

像这样的SQL:

SELECT users.* FROM users
WHERE EXISTS (SELECT id FROM comments WHERE user_id = users.id GROUP BY user_id HAVING COUNT(*) >= 3)

ActiveRecord表示法中的哪一个转换为:

User.where('EXISTS (SELECT id FROM comments WHERE user_id = users.id GROUP BY user_id HAVING COUNT(*) >= 3)')
相关问题