2014年1月31日金曜日

Railsのincludeとjoinsの違い

ActiveRecordにはincludeとjoinsというふたつのメソッドが用意されています。どちらも対象のテーブルと関連するテーブルを同時に取得するというメソッドですが、このふたつには微妙に違いがあります。

書式

includeメソッド
Test.include(:test)
joinメソッド
Test.joins(:test)

joinsは関連テーブルに条件を付けることができる

includeとjoinsの両方とも関連テーブルも取得することができますが、joinsはさらに関連テーブルに条件を付けることができます。例えば、カテゴリーのnameがrubyのやつだけのtestのレコードを取得するには以下のようになります。
test = Test.joins(:categories).where(:categories => {:name => “ruby”})
  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly