我们假设用户有评论,我希望所有用户都有三条或更多评论。
User.joins(:comments)
会给我任何有用户的
一个或多个评论。获得至少三条评论的用户最好的方法是什么?
答案 0 :(得分:3)
更好的方法可能是使用API编写子查询:
subquery = Comment.select("user_id").
group(:user_id).
having("COUNT(*) >= 3").to_sql
User.where("id IN (#{subquery})")
答案 1 :(得分:0)
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)')