说我有Item that has_many Posts
。
我需要选择没有任何帖子的项目。
我目前的解决方案是这样的:
Item.where("NOT EXISTS (SELECT 1 FROM posts p WHERE p.item_id = items.id)")
这是最好的方法吗?也许应该以某种方式使用 OUTER JOIN ?
阅读您的建议后 - 我使用了以下代码:
Item.includes(:posts).where(:posts => {:item_id => nil})
或使用 Squeel gem:
Item.includes{:posts}.where{posts.item_id == nil}
我喜欢它,因为它不需要任何手动 SQL。
多谢你们。