这是一个让我不知所措的烦人案例 - 我想了解原因,以及如何一劳永逸地解决这个问题。
我正在尝试从帖子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 - 所以它再次失败!我该如何解决?
答案 0 :(得分:0)
找到另一个问题的答案,这有帮助。
显然,Posts.rb文件有这一行:
default_scope { order('id ASC') }
这导致它将'id ASC'添加到查询字符串的末尾。删除它就行了。