私が持っているとしましょう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 を必要としないため、これが気に入っています。
みんなありがとう。