为什么这个ActiveRecord SQL!=查询没有与equivalent = query相反?

时间:2015-07-14 16:23:44

标签: sql ruby-on-rails ruby ruby-on-rails-3 activerecord

我有以下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) )。

1 个答案:

答案 0 :(得分:0)

按照我的意图工作......

我注意到的一件事是您的查询不同, .user_id comments.user_id

has_and_belongs_to_many