On Thursday, 1 May 2014 at 10:44:42 UTC, Jacob Carlborg wrote:
On 2014-04-30 22:38, Adam D. Ruppe wrote:
I also find myself really missing outer joins and views.

For outer joins:

1. You can always use raw SQL, also in combination with ActiveRecord

Post.joins(:comments).joins("outer join foos on foos.post_id = posts.id").where(title: "bar")

2. My preferred choice, using Squeel [1] (another gem). With Squeel the above would look like this:

Post.joins(:comments).joins{ foos.outer }.where(title: "bar")

You can also use the built-in `includes()`, which does a LEFT OUTER JOIN:

    Post.includes(:comments).where(comments: {title: "bar"})

(It also eager-loads the comments, but this is usually desired anyway, because an OUTER JOIN doesn't make sense if you're not going to use the joined records.)

Reply via email to