我正在开展一个项目,我有很多用户,而且用户有很多帖子。我正在尝试让帖子计数超过某个阈值的用户,但我正在使用的查询似乎不起作用。
User.where(id: user_ids)
.where(has_posts: true)
.joins(:posts)
.group('users.id')
.having('COUNT(posts.id) >= user.post_threshold')
但是通过此查询,我得到Unknown column posts.id in 'having clause':
如何解决这个问题的任何帮助将不胜感激。
答案 0 :(得分:0)
你可以使用posts.*
表示法,至少在Postgres中,不了解mysql。
User.where(id: user_ids)
.where(has_posts: true)
.joins(:posts)
.group(:id)
.having('COUNT(posts.*) >= users.post_threshold')
答案 1 :(得分:0)
你不需要having
,一个简单的where
会很好地为你服务:
User.
where(id: user_ids).
where(has_posts: true).
where('COUNT(posts.id) >= users.post_threshold').
joins(:posts).
group('users.id')
编辑:在某些数据库中,您可能需要在聚合中包含聚合,将此行添加到链中:
.select('*, COUNT(posts.id)')