ActiveRecord查询分组按顺序在“id”字段上失败

时间:2014-09-21 09:24:08

标签: postgresql activerecord

这是一个让我不知所措的烦人案例 - 我想了解原因,以及如何一劳永逸地解决这个问题。

我正在尝试从帖子ID列表中获取每个帖子的评论数量。所以一开始我检查我得到了我想要的东西,并且效果很好

  

Comments.joins(:post).where('posts.id'=>   [123147])。计数

现在我想通过post.id分组:

  

Comments.joins(:post).where('posts.id'=>   [123147])。组( 'posts.id')。计数

它失败了:

ActiveRecord::StatementInvalid: PG::AmbiguousColumn: ERROR:  column reference "id" is ambiguous
LINE 1: ...e_id" IN (123, 147) GROUP BY posts.id ORDER BY id ASC

我意识到'id'是不明确的,但我没有要求订购,当我尝试添加自己的订单时,它只是将我的订单添加到id - 所以它再次失败!我该如何解决?

1 个答案:

答案 0 :(得分:0)

找到另一个问题的答案,这有帮助。

显然,Posts.rb文件有这一行:

default_scope { order('id ASC') }

这导致它将'id ASC'添加到查询字符串的末尾。删除它就行了。