Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

fix AR having() not to raise NoMethodError when the given argument do…

…es not respond to empty?

having raises NoMethodError: undefined method `empty?' when a Fixnum or Date/Time were passed via varargs
  • Loading branch information...
commit 7f37ed0152f5b5821a3f209ae5b36377a0800456 1 parent ca94acf
@amatsuda amatsuda authored
View
6 activerecord/lib/active_record/relation/query_methods.rb
@@ -96,11 +96,11 @@ def where(opts, *rest)
relation
end
- def having(*args)
- return self if args.blank?
+ def having(opts, *rest)
+ return self if opts.blank?
relation = clone
- relation.having_values += build_where(*args)
+ relation.having_values += build_where(opts, rest)
relation
end
View
7 activerecord/test/cases/finder_test.rb
@@ -159,6 +159,13 @@ def test_find_with_group_and_sanitized_having
assert developers.all? { |developer| developer.salary > 10000 }
end
+ def test_find_with_group_and_sanitized_having_method
+ developers = Developer.group(:salary).having("sum(salary) > ?", 10000).select('salary').all
+ assert_equal 3, developers.size
+ assert_equal 3, developers.map(&:salary).uniq.size
+ assert developers.all? { |developer| developer.salary > 10000 }
+ end
+
def test_find_with_entire_select_statement
topics = Topic.find_by_sql "SELECT * FROM topics WHERE author_name = 'Mary'"
Please sign in to comment.
Something went wrong with that request. Please try again.