Add default_scope note to AR guide [ci skip]

Adds note to explain unexpected behavior described in issue #28561.
Developers may be surprised that the internal representation of similar
query conditions in Hash and Array formats in default_scope will yield 
different results for model initialization.
Link: https://github.com/rails/rails/issues/28561
This commit is contained in:
Ross Kaffenberger 2017-03-31 18:11:15 -04:00 committed by GitHub
parent 56014880a2
commit 9aeba503c4
1 changed files with 14 additions and 2 deletions

View File

@ -1381,8 +1381,9 @@ class Client < ApplicationRecord
end
```
NOTE: The `default_scope` is also applied while creating/building a record.
It is not applied while updating a record. E.g.:
NOTE: The `default_scope` is also applied while creating/building a record
when the scope arguments are given as a `Hash`. It is not applied while
updating a record. E.g.:
```ruby
class Client < ApplicationRecord
@ -1393,6 +1394,17 @@ Client.new # => #<Client id: nil, active: true>
Client.unscoped.new # => #<Client id: nil, active: nil>
```
Be aware that, when given in the `Array` format, `default_scope` query arguments
cannot be converted to a `Hash` for default attribute assignment. E.g.:
```ruby
class Client < ApplicationRecord
default_scope { where("active = ?", true) }
end
Client.new # => #<Client id: nil, active: nil>
```
### Merging of scopes
Just like `where` clauses scopes are merged using `AND` conditions.