Activerecord 使用Rails 3按子项计数筛选

Activerecord 使用Rails 3按子项计数筛选,activerecord,ruby-on-rails-3,count,where-clause,Activerecord,Ruby On Rails 3,Count,Where Clause,我想使用Rails 3和单个查询选择包含一个或多个注释的帖子 我正在尝试这样的事情: Post.includes(:comments).where('count(comments.id)>0') 但是我得到了这个错误: ActiveRecord::StatementInvalid: PGError: ERROR: aggregates not allowed in WHERE clause 我在谷歌上搜索过这个和类似的方法,分组等等,但运气不好。任何帮助都将不胜感激。我相信你现在可能

我想使用Rails 3和单个查询选择包含一个或多个注释的帖子

我正在尝试这样的事情:

Post.includes(:comments).where('count(comments.id)>0')
但是我得到了这个错误:

ActiveRecord::StatementInvalid: PGError: ERROR:  aggregates not allowed in WHERE clause

我在谷歌上搜索过这个和类似的方法,分组等等,但运气不好。任何帮助都将不胜感激。

我相信你现在可能已经明白了这一点,但我相信你想要的是有(:条件)的关系,Jose

Post.includes(:comments).having(:conditions => "count(comments.id) > 0")

我还没有测试过那段代码,所以请谨慎对待,但您肯定可以从那里开始。

我想我已经尝试过类似的方法,但我遇到了另一个例外:“ActiveRecord::StatementInvalid:PGError:ERROR:column”posts.id“必须出现在GROUP BY子句中或在聚合函数中使用”。我还没有弄清楚如何构建正确的查询来避免分组问题。