我有以下AR / SQL代码返回以下值:
Post.joins(:comments).uniq.count # => 20
当我按照下面的方法进行优化时,我会得到我期望的减少值:
Post.joins(:comments).uniq.where('comments.user_id = ?', user.id).count # => 9
因此,当我运行相同的代码但是匹配被否定时,我希望得到相反的记录 - 即计数为11.但是我得到了这个:
Post.joins(:comments).uniq.where('comments.user_id != ?', user.id).count # => 20
我想说的是,基本上“查找评论由其他人发表评论的所有帖子。”
我是否误解了SQL中的否定行为?
我应该指定我正在使用Rails 3.2.18,它似乎不允许我在Rails指南中找到的where.not()
语法(它引发了ArgumentError:错误的参数数量(0表示1) )。
答案 0 :(得分:0)
按照我的意图工作......
我注意到的一件事是您的查询不同, .user_id 和 comments.user_id
has_and_belongs_to_many