aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorRaimonds Simanovskis <raimonds.simanovskis@gmail.com>2011-01-10 18:55:32 +0200
committerAaron Patterson <aaron.patterson@gmail.com>2011-01-10 15:51:32 -0800
commitf4f4964ce0a05cac38bbff3b308ac558228bad29 (patch)
treeabfdd44377a721f46ef38aea35f68e4f55654830 /activerecord/lib/active_record/relation
parent06165856196ac17b87163d146abea46019b17032 (diff)
downloadrails-f4f4964ce0a05cac38bbff3b308ac558228bad29.tar.gz
rails-f4f4964ce0a05cac38bbff3b308ac558228bad29.tar.bz2
rails-f4f4964ce0a05cac38bbff3b308ac558228bad29.zip
Always return decimal average of integer fields
In previous version if database adapter (e.g. SQLite and Oracle) returned non-String calculated values then type_cast_using_column converted decimal average value of intefer field to integer value. Now operation parameter is always checked to decide which conversion of calculated value should be done.
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb14
1 files changed, 5 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb
index e9e451ec5c..b75a65e3ca 100644
--- a/activerecord/lib/active_record/relation/calculations.rb
+++ b/activerecord/lib/active_record/relation/calculations.rb
@@ -282,15 +282,11 @@ module ActiveRecord
end
def type_cast_calculated_value(value, column, operation = nil)
- if value.is_a?(String) || value.nil?
- case operation
- when 'count' then value.to_i
- when 'sum' then type_cast_using_column(value || '0', column)
- when 'average' then value.try(:to_d)
- else type_cast_using_column(value, column)
- end
- else
- type_cast_using_column(value, column)
+ case operation
+ when 'count' then value.to_i
+ when 'sum' then type_cast_using_column(value || '0', column)
+ when 'average' then value.try(:to_d)
+ else type_cast_using_column(value, column)
end
end