aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2012-06-25 17:36:24 -0300
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2012-06-25 18:31:59 -0300
commite5abb89c54ed04e4811cec84c38742e4a6a0c4c5 (patch)
tree1561067c9edd033124f9ae5a13cc2c96a7c21001 /activerecord/lib/active_record
parent07875be977aae8d95df33a5fa43d30562cd2b1df (diff)
downloadrails-e5abb89c54ed04e4811cec84c38742e4a6a0c4c5.tar.gz
rails-e5abb89c54ed04e4811cec84c38742e4a6a0c4c5.tar.bz2
rails-e5abb89c54ed04e4811cec84c38742e4a6a0c4c5.zip
Ensure Arel columns are typecasted properly when grouping with calculation
Fix build issue with postgresql.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb12
1 files changed, 6 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb
index a1d74f3bfb..e40b958b54 100644
--- a/activerecord/lib/active_record/relation/calculations.rb
+++ b/activerecord/lib/active_record/relation/calculations.rb
@@ -265,9 +265,9 @@ module ActiveRecord
group_attrs = group_values
if group_attrs.first.respond_to?(:to_sym)
- association = @klass.reflect_on_association(group_attrs.first.to_sym)
- associated = group_attrs.size == 1 && association && association.macro == :belongs_to # only count belongs_to associations
- group_fields = Array(associated ? association.foreign_key : group_attrs)
+ association = @klass.reflect_on_association(group_attrs.first.to_sym)
+ associated = group_attrs.size == 1 && association && association.macro == :belongs_to # only count belongs_to associations
+ group_fields = Array(associated ? association.foreign_key : group_attrs)
else
group_fields = group_attrs
end
@@ -313,10 +313,10 @@ module ActiveRecord
end
Hash[calculated_data.map do |row|
- key = group_columns.map { |aliaz, column|
+ key = group_columns.map { |aliaz, column|
type_cast_calculated_value(row[aliaz], column)
}
- key = key.first if key.size == 1
+ key = key.first if key.size == 1
key = key_records[key] if associated
[key, type_cast_calculated_value(row[aggregate_alias], column_for(column_name), operation)]
end]
@@ -343,7 +343,7 @@ module ActiveRecord
end
def column_for(field)
- field_name = field.to_s.split('.').last
+ field_name = field.respond_to?(:name) ? field.name.to_s : field.to_s.split('.').last
@klass.columns.detect { |c| c.name.to_s == field_name }
end