人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Railsで子モデルのレコードが、あるか、ないか、で抽出仕分ける方法
Class User < ActiveRecord::Base
has_one :child
end
Class Child < ActiveRecord::Base
belongs_to :user
end
例えば上記のような関係だったとして、
childモデルのレコードが存在しているusersレコード全て、
childモデルのレコードが存在していないusersレコード全て、
を抽出する方法を教えて下さい。
よろしくお願いします。

●質問者: Takapin
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

childモデルが存在している場合、childモデルは引っ張ってこなくてだいじょぶです。抽出するのはuserモデルだけでお願いします。


1 ● a-kuma3
●100ポイント ベストアンサー

こんなページがありました。
http://qiita.com/abey1192/items/198f3c15d14392023a63
http://labs.timedia.co.jp/2013/10/activerecord4sql-arel.html


User の id と、Child の user_id が紐づいているとして、こんな感じになるのじゃないかと思います。

user_table = User.arel_table
child_table = Child.arel_table
condition = child_table[:user_id].eq(user_table[:id])

users__has_child = User.where(UserGroup.where(condition).exists).all
users__no_child = User.where(UserGroup.where(condition).exists.not).all

Takapinさんのコメント
ありがとうございました。一旦下記のような感じで一部SQLで自己解決していましたが、そちらも試してみます。 ''' User.joins('LEFT JOIN childs ON users.id = childs.user_id').where('childs.id IS NULL') '''
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ