mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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:
parent
56014880a2
commit
9aeba503c4
1 changed files with 14 additions and 2 deletions
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue