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:
parent
4d594cffcf
commit
78c2d9fc22
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user