diff options
author | r7kamura <r7kamura@gmail.com> | 2018-10-27 14:35:51 +0900 |
---|---|---|
committer | r7kamura <r7kamura@gmail.com> | 2018-10-27 21:53:11 +0900 |
commit | 4694fcf4133a74bb0689e4888e73aa2f605394f7 (patch) | |
tree | 8f4a03fda9b1c5e0b3825fd6abdb1e7bfd8789a0 /activerecord/lib/active_record | |
parent | 5431e17733366da1fd10f2cd3039d66a56012683 (diff) | |
download | rails-4694fcf4133a74bb0689e4888e73aa2f605394f7.tar.gz rails-4694fcf4133a74bb0689e4888e73aa2f605394f7.tar.bz2 rails-4694fcf4133a74bb0689e4888e73aa2f605394f7.zip |
Ignore empty condition on #construct_relation_for_exists
At https://github.com/rails/rails/commit/fc0e3354af7e7878bdd905a95ce4c1491113af9a,
```rb
relation = relation.where(conditions)
```
was rewritten to:
```rb
relation.where!(condition)
```
This change accidentally changed the result of `Topic.exists?({})` from true to false.
To fix this regression, first I moved the blank check logic (`opts.blank?`) from `#where` to `#where!`,
because I thought `#where!` should be identical to `#where`, except that instead of returning a new relation,
it adds the condition to the existing relation.
But on second thought after some discussion on https://github.com/rails/rails/pull/34329,
I started to think that just fixing `#construct_relation_for_exists` is more preferable
than changing `#where` and `#where!`.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/relation/finder_methods.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 6f420fe6bb..afaa900442 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -363,7 +363,7 @@ module ActiveRecord case conditions when Array, Hash - relation.where!(conditions) + relation.where!(conditions) unless conditions.empty? else relation.where!(primary_key => conditions) unless conditions == :none end |