Rails / アソシエーションした先のデータを持っていないレコードを検索する
タイトルがすごい分かりづらい。。。
User has_many Blogs
のようになっている時、Blogを持っていないUserを検索したい。
ruby
1
@users = User.includes(:blogs).where( :blogs => { :id => nil } )
ちなみにtechというカテゴリーのブログをもつUserを検索するのは、こんな感じ。
ruby
1
@users = User.includes(:blogs).where( :blogs => { :category => 'tech' } )
こちらがドンピシャです。
Want to find records with no associated records in Rails 3
includesについてはこちらが参考になりました。
似ているようで全然違う!?Activerecordにおけるincludesとjoinsの振る舞いまとめ - Qiita
以上。