2012年10月9日火曜日

複数テーブルのJOIN

ActiveRecordを使って、複数テーブルのJOINをする際にincludesを使う場合、
複数テーブルをどうやって指定すれば良いのだろうと調べてました。

ひとまず忘れないうちにメモっておきます。

1テーブルのみJOINする場合は、下記のようにかけるのですが、
さらに遡リたい場合はどうすればよいのだろうと。
下記は、projectsがclient_idを持ってるイメージ。
Project.includes(:client)

2テーブルJOINする場合は、下記のように配列とハッシュの組み合わせになります。
こんなふうに書くと、どんどん遡ってかけます。
下記は、teamsがproject_idを持っていて、projectsがclient_idを持ってるイメージ。
Team.includes(:project => [:client])
さらにwhere句を付ける場合は、下記のようにテーブル名をつけてあげます。
Team.includes(:project => [:client]).where("clients.code = ? ", code)

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。