2
假設用戶有評論,並且我希望所有用戶有三條評論或更多評論。ActiveRecord其中至少存在x個關聯記錄
User.joins(:comments)
會讓我有 一個或多個評論的任何用戶。有至少三條評論的用戶最好的方法是什麼?
假設用戶有評論,並且我希望所有用戶有三條評論或更多評論。ActiveRecord其中至少存在x個關聯記錄
User.joins(:comments)
會讓我有 一個或多個評論的任何用戶。有至少三條評論的用戶最好的方法是什麼?
一個更好的辦法可能是使用API編寫子查詢:
subquery = Comment.select("user_id").
group(:user_id).
having("COUNT(*) >= 3").to_sql
User.where("id IN (#{subquery})")
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)')
真好看並且清楚。很好的答案! –