diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb index 6d3e5327fb21256e2264cdfad31bbef9b00aaed3..f45844a9ea8bed0867c35e9a95f72a38c1b19b02 100644 --- a/activerecord/lib/active_record/relation/calculations.rb +++ b/activerecord/lib/active_record/relation/calculations.rb @@ -277,14 +277,8 @@ def execute_grouped_calculation(operation, column_name, distinct) #:nodoc: end group_fields = arel_columns(group_fields) - group_aliases = group_fields.map { |field| - column_alias_for(field) - } - group_columns = group_aliases.zip(group_fields).map { |aliaz,field| - [aliaz, field] - } - - group = group_fields + group_aliases = group_fields.map { |field| column_alias_for(field) } + group_columns = group_aliases.zip(group_fields) if operation == 'count' && column_name == :all aggregate_alias = 'count_all' @@ -300,7 +294,7 @@ def execute_grouped_calculation(operation, column_name, distinct) #:nodoc: ] select_values += select_values unless having_clause.empty? - select_values.concat group_fields.zip(group_aliases).map { |field,aliaz| + select_values.concat group_columns.map { |aliaz, field| if field.respond_to?(:as) field.as(aliaz) else @@ -309,7 +303,7 @@ def execute_grouped_calculation(operation, column_name, distinct) #:nodoc: } relation = except(:group) - relation.group_values = group + relation.group_values = group_fields relation.select_values = select_values calculated_data = @klass.connection.select_all(relation, nil, relation.bound_attributes) diff --git a/activerecord/test/models/company.rb b/activerecord/test/models/company.rb index a96b8ef0f218561b36421db8f222a6462e9cd745..1dcd9fc21e28781451630b5a04b2d2d67d134547 100644 --- a/activerecord/test/models/company.rb +++ b/activerecord/test/models/company.rb @@ -10,7 +10,6 @@ class Company < AbstractCompany has_one :dummy_account, :foreign_key => "firm_id", :class_name => "Account" has_many :contracts has_many :developers, :through => :contracts - has_many :accounts scope :of_first_firm, lambda { joins(:account => :firm).