1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Disambiguate Where In A Joined Relation as a rails til

This commit is contained in:
jbranchaud
2019-04-11 10:13:34 -05:00
parent 1cade78698
commit e63928445f
2 changed files with 31 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
For a steady stream of TILs from a variety of rocketeers, checkout For a steady stream of TILs from a variety of rocketeers, checkout
[til.hashrocket.com](https://til.hashrocket.com/). [til.hashrocket.com](https://til.hashrocket.com/).
_802 TILs and counting..._ _803 TILs and counting..._
--- ---
@@ -490,6 +490,7 @@ _802 TILs and counting..._
- [Custom Validation Message](rails/custom-validation-message.md) - [Custom Validation Message](rails/custom-validation-message.md)
- [Delete Paranoid Records](rails/delete-paranoid-records.md) - [Delete Paranoid Records](rails/delete-paranoid-records.md)
- [Demodulize A Class Name](rails/demodulize-a-class-name.md) - [Demodulize A Class Name](rails/demodulize-a-class-name.md)
- [Disambiguate Where In A Joined Relation](rails/disambiguate-where-in-a-joined-relation.md)
- [Generating And Executing SQL](rails/generating-and-executing-sql.md) - [Generating And Executing SQL](rails/generating-and-executing-sql.md)
- [Hash Slicing](rails/hash-slicing.md) - [Hash Slicing](rails/hash-slicing.md)
- [Ignore Poltergeist JavaScript Errors](rails/ignore-poltergeist-javascript-errors.md) - [Ignore Poltergeist JavaScript Errors](rails/ignore-poltergeist-javascript-errors.md)

View File

@@ -0,0 +1,29 @@
# Disambiguate Where In A Joined Relation
When you join two tables using ActiveRecord
```ruby
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:
```ruby
Post.joins(:author).where({ authors: { name: "John Steinbeck" }})
```
You can also use the string syntax:
```ruby
Post.joins(:author).where("authors.name = ?", "John Steinbeck")
```
[source](https://apidock.com/rails/v4.2.7/ActiveRecord/QueryMethods/where)