7

Arel 3.0.2には、結合タイプを指定するための2つのクラスがあります。Arel::Nodes::InnerJoinとはデフォルトとしてArel::Nodes::OuterJoin使用InnerJoinされます。

foo = Arel::Table.new('foo')
bar = Arel::Table.new('bar')

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

foo.join(bar, ???) # left

左結合を作成する場合、2つのテーブルをどのように結合できますか?

4

2 に答える 2

13

使用できます

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

LEFT JOIN = LEFTOUTERJOINだからです。アウターはオプションです。こちらをご覧ください

于 2012-09-20T13:53:58.307 に答える
2

これは、見たい人のためのレールモデルの完全な例です。

理解するのに数時間かかったので、私は世界と共有しようと思いました

RssFeedこれは、1つのモデルが呼び出され、別のモデルが呼び出されていることを前提としています。これはRssFeedUser、has_manyの結合モデルです。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.*')
)
于 2014-04-23T06:16:21.537 に答える