Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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
Akira Matsuda amatsuda authored
6 activerecord/lib/active_record/relation/query_methods.rb
View
@@ -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
7 activerecord/test/cases/finder_test.rb
View
@@ -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.