aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/finder_test.rb
diff options
context:
space:
mode:
authorr7kamura <r7kamura@gmail.com>2018-10-27 14:35:51 +0900
committerr7kamura <r7kamura@gmail.com>2018-10-27 21:53:11 +0900
commit4694fcf4133a74bb0689e4888e73aa2f605394f7 (patch)
tree8f4a03fda9b1c5e0b3825fd6abdb1e7bfd8789a0 /activerecord/test/cases/finder_test.rb
parent5431e17733366da1fd10f2cd3039d66a56012683 (diff)
downloadrails-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/test/cases/finder_test.rb')
-rw-r--r--activerecord/test/cases/finder_test.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb
index 355fb4517f..dafbf67456 100644
--- a/activerecord/test/cases/finder_test.rb
+++ b/activerecord/test/cases/finder_test.rb
@@ -246,6 +246,10 @@ class FinderTest < ActiveRecord::TestCase
assert_equal true, Topic.first.replies.exists?
end
+ def test_exists_with_empty_hash_arg
+ assert_equal true, Topic.exists?({})
+ end
+
# Ensure +exists?+ runs without an error by excluding distinct value.
# See https://github.com/rails/rails/pull/26981.
def test_exists_with_order_and_distinct