aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorFyodor <xarabonradarx@gmail.com>2013-04-23 17:07:49 +0400
committerFyodor <xarabonradarx@gmail.com>2013-04-23 17:07:49 +0400
commit746a9992f0a842ded7a15cc5ce0afd0fa00f2ada (patch)
treeddd76cb6734e812c60ea0eeef7d4c6d54b07ea61 /activerecord
parenta56b150b6401cc3384d2be2db7530662047966e0 (diff)
downloadrails-746a9992f0a842ded7a15cc5ce0afd0fa00f2ada.tar.gz
rails-746a9992f0a842ded7a15cc5ce0afd0fa00f2ada.tar.bz2
rails-746a9992f0a842ded7a15cc5ce0afd0fa00f2ada.zip
When empty options passed to having clause having_values was [nil] but should be empty.
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb1
-rw-r--r--activerecord/test/cases/relations_test.rb8
2 files changed, 8 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 6ee3711052..9fcd2d06c5 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -551,7 +551,6 @@ module ActiveRecord
# Order.having('SUM(price) > 30').group('user_id')
def having(opts, *rest)
opts.blank? ? self : spawn.having!(opts, *rest)
- spawn.having!(opts, *rest)
end
def having!(opts, *rest) # :nodoc:
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb
index 9008c2785e..cf6af4e8f4 100644
--- a/activerecord/test/cases/relations_test.rb
+++ b/activerecord/test/cases/relations_test.rb
@@ -1299,6 +1299,14 @@ class RelationTest < ActiveRecord::TestCase
assert_equal ['Foo', 'Foo'], query.uniq(true).uniq(false).map(&:name)
end
+ def test_doesnt_add_having_values_if_options_are_blank
+ scope = Post.having('')
+ assert_equal [], scope.having_values
+
+ scope = Post.having([])
+ assert_equal [], scope.having_values
+ end
+
def test_references_triggers_eager_loading
scope = Post.includes(:comments)
assert !scope.eager_loading?