提交 e7bec4e4 编写于 作者: B Bogdan Gusiev

Fixed AR::Relation#sum compatibility with Array#sum

In order make Relation behavior closer to Array
Made Relation#sum to accept block and delegate it to Array#sum
上级 289b5253
......@@ -89,8 +89,12 @@ def maximum(column_name, options = {})
# +calculate+ for examples with options.
#
# Person.sum('age') # => 4562
def sum(column_name, options = {})
calculate(:sum, column_name, options)
def sum(*args)
if block_given?
self.to_a.sum(*args) {|*block_args| yield(*block_args)}
else
calculate(:sum, *args)
end
end
# This calculates aggregate values in the given column. Methods for count, sum, average,
......
......@@ -397,6 +397,10 @@ def test_sum_with_from_option
Account.sum(:credit_limit, :from => 'accounts', :conditions => "credit_limit > 50")
end
def test_sum_array_compatibility
assert_equal Account.sum(:credit_limit), Account.sum(&:credit_limit)
end
def test_average_with_from_option
assert_equal Account.average(:credit_limit), Account.average(:credit_limit, :from => 'accounts')
assert_equal Account.average(:credit_limit, :conditions => "credit_limit > 50"),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册