Calculations: return nil average instead of 0 when there are no rows to average. Closes #8298.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6904 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
b2681cca2e
commit
1f802968c5
|
@ -1,5 +1,7 @@
|
||||||
*SVN*
|
*SVN*
|
||||||
|
|
||||||
|
* Calculations: return nil average instead of 0 when there are no rows to average. #8298 [davidw]
|
||||||
|
|
||||||
* acts_as_nested_set: direct_children is sorted correctly. #4761 [Josh Peek, rails@33lc0.net]
|
* acts_as_nested_set: direct_children is sorted correctly. #4761 [Josh Peek, rails@33lc0.net]
|
||||||
|
|
||||||
* Raise an exception if both attr_protected and attr_accessible are declared. #8507 [stellsmi]
|
* Raise an exception if both attr_protected and attr_accessible are declared. #8507 [stellsmi]
|
||||||
|
|
|
@ -265,7 +265,7 @@ module ActiveRecord
|
||||||
operation = operation.to_s.downcase
|
operation = operation.to_s.downcase
|
||||||
case operation
|
case operation
|
||||||
when 'count' then value.to_i
|
when 'count' then value.to_i
|
||||||
when 'avg' then value.to_f
|
when 'avg' then value && value.to_f
|
||||||
else column ? column.type_cast(value) : value
|
else column ? column.type_cast(value) : value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,10 @@ require 'fixtures/topic'
|
||||||
|
|
||||||
Company.has_many :accounts
|
Company.has_many :accounts
|
||||||
|
|
||||||
|
class NumericData < ActiveRecord::Base
|
||||||
|
self.table_name = 'numeric_data'
|
||||||
|
end
|
||||||
|
|
||||||
class CalculationsTest < Test::Unit::TestCase
|
class CalculationsTest < Test::Unit::TestCase
|
||||||
fixtures :companies, :accounts, :topics
|
fixtures :companies, :accounts, :topics
|
||||||
|
|
||||||
|
@ -17,6 +21,10 @@ class CalculationsTest < Test::Unit::TestCase
|
||||||
assert_in_delta 53.0, value, 0.001
|
assert_in_delta 53.0, value, 0.001
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_should_return_nil_as_average
|
||||||
|
assert_nil NumericData.average(:bank_balance)
|
||||||
|
end
|
||||||
|
|
||||||
def test_should_get_maximum_of_field
|
def test_should_get_maximum_of_field
|
||||||
assert_equal 60, Account.maximum(:credit_limit)
|
assert_equal 60, Account.maximum(:credit_limit)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue