When you join two tables using ActiveRecord
Post.joins(:author)
You get a relation that involves both of the tables. This allows you to write queries that work off the data in that join.
The primary table in the join is posts
. Any column references in a
#where
call will be assumed to be related to posts
. If you want to
reference a column on the authors
table, you'll need to provide that
specificity.
The hash syntax for #where
is a great way to do that:
Post.joins(:author).where({ authors: { name: "John Steinbeck" }})
You can also use the string syntax:
Post.joins(:author).where("authors.name = ?", "John Steinbeck")