2012-09-18 8 views
5

Arel 3.0.2は、結合タイプを指定する2つのクラス、つまりArel::Nodes::InnerJoinArel::Nodes::OuterJoinを提供し、デフォルトでInnerJoinを使用します。Arelに参加するにはどうすればいいですか?

左結合を作成するにはどうすれば2つのテーブルを結合できますか?

+0

というモデルおそらくこれは助けることができる:http://ruby.ryanbigg.com/post/1468788928/left-outer-join-with-arelを –

答えて

7

使用

foo.join(bar, Arel::Nodes::OuterJoin) # outer 

LEFT JOINは= LEFT OUTER JOINをするので。外はオプションです。 を参照してください。here

0

ここには、見たいと思う人のためのレールモデルの完全な例があります。以下のための通過:

を把握するために私に時間のカップルを取ったので、私は世界で

を共有するこれを使用すると、1つのモデルがRssFeedと呼ばれ、他はhas_manyのためのモデルに参加しているRssFeedUser呼ば前提と思いましたUser

RssFeed.find_by_sql(RssFeed.arel_table.join(RssFeedUser.arel_table,Arel::Nodes::OuterJoin).on(RssFeed.arel_table[:id].eq(RssFeedUser.arel_table[:rss_feed_id])).where(RssFeedUser.arel_table[:user_id].eq(nil)).project('rss_feeds.*')) 
関連する問題