Search code examples
rubyjoinarel

How to left join with Arel?


Arel 3.0.2 provides two classes to specify the join type: Arel::Nodes::InnerJoin and Arel::Nodes::OuterJoin and uses InnerJoin as default.

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

How can you join two tables if you want to produce a left join?


Solution

  • You can use

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

    Because LEFT JOIN = LEFT OUTER JOIN. Outer is an option. See here