Rails3のActiveRecordでLEFT OUTER JOINしたいです。実装方法を教えてください。


【モデル】

1.group(グループテーブル)
id
name

2.user_group_cmb(ユーザーグループ関連テーブル)
id
user_id
group_id

【実行したいSQL】

select * from groups as g left outer join user_group_cmbs as cmb on g.id = cmb.group_id where cmb.user_id = 1

【質問したいこと】
1.上記SQLを実行するための実装。(関連の設定(has_many?)が必要ですよね)

2.1つのモデルのSELECTの場合、@group = Group.find と、@groupに格納していましたが、複数テーブルの場合、別途DTOみたいのを作る必要がありますか?(JavaならDTO作ってましたが。。)

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/11/13 14:15:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:techmedia-think No.1

回答回数46ベストアンサー獲得回数13

ポイント100pt

1については、多対多の関連テーブルとして実現できるかと思います。以下のサイトが参考になると思います。

http://d.hatena.ne.jp/shunsuk/20090323/1237806859

2についてですが、RailsであまりDTOを作るケースは少ないかと思います。複数テーブルのデータを取得する場合、それらのテーブルに関連があるのであれば、取得したActiveRecord経由で参照できるかと思います。

(↑のサイトの@entry.tagsとやってるように。)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません