【发布时间】:2016-01-15 15:51:47
【问题描述】:
此查询有效:
person.posts.includes(:categories).
references(:categories).where(categories: { id: 20 })
但在 NOT 条件下:
person.posts.includes(:categories).
references(:categories).where.not(categories: { id: 20 })
第二个查询完成且没有错误 - 但没有对结果进行过滤 - 因此它返回所有帖子。
MySQL:
SELECT COUNT(DISTINCT `posts`.`id`) FROM `posts`
LEFT OUTER JOIN `category_manifests` ON `category_manifests`.`post_id` = `posts`.`id`
LEFT OUTER JOIN `categories` ON `categories`.`id` = `category_manifests`.`category_id`
WHERE `posts`.`person_id` = 14 AND (`categories`.`id` != 20)
我在 Activerecord 文档中没有发现任何内容表明这是不可能的 - 我在这里遗漏了一些基本的东西吗?
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-4 activerecord