ActiveRecord::Base#sum defaults to 0 if no rows are returned. Closes #11550 [kamal]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9243 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Rick Olson 2008-04-08 05:20:33 +00:00
parent 4d594cffcf
commit 78c2d9fc22
3 changed files with 7 additions and 1 deletions

@ -1,5 +1,7 @@
*SVN*
* ActiveRecord::Base#sum defaults to 0 if no rows are returned. Closes #11550 [kamal]
* Ensure that respond_to? considers dynamic finder methods. Closes #11538. [floehopper]
* Ensure that save on parent object fails for invalid has_one association. Closes #10518. [Pratik]

@ -71,7 +71,7 @@ def maximum(column_name, options = {})
#
# Person.sum('age')
def sum(column_name, options = {})
calculate(:sum, column_name, options)
calculate(:sum, column_name, options) || 0
end
# This calculates aggregate values in the given column. Methods for count, sum, average, minimum, and maximum have been added as shortcuts.

@ -97,6 +97,10 @@ def test_should_sum_field_with_conditions
assert_equal 105, Account.sum(:credit_limit, :conditions => 'firm_id = 6')
end
def test_should_return_zero_if_sum_conditions_return_nothing
assert_equal 0, Account.sum(:credit_limit, :conditions => '1 = 2')
end
def test_should_group_by_summed_field_with_conditions
c = Account.sum(:credit_limit, :conditions => 'firm_id > 1',
:group => :firm_id)