LEFT OUTER joins in Rails 3

Neil Middleton picture Neil Middleton · Jul 14, 2010 · Viewed 65.5k times · Source

I have the following code:

@posts = Post.joins(:user).joins(:blog).select

which is meant to find all posts and return them and the associated users and blogs. However, users are optional which means that the INNER JOIN that :joins generates is not returning lots of records.

How do I use this to generate a LEFT OUTER JOIN instead?

Answer

Neil Middleton picture Neil Middleton · Jul 14, 2010
@posts = Post.joins("LEFT OUTER JOIN users ON users.id = posts.user_id").
              joins(:blog).select