diff options
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r-- | activerecord/lib/active_record/relation/calculations.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb index 54c93332bb..d457062341 100644 --- a/activerecord/lib/active_record/relation/calculations.rb +++ b/activerecord/lib/active_record/relation/calculations.rb @@ -107,7 +107,8 @@ module ActiveRecord relation = with_default_scope if relation.equal?(self) - if eager_loading? || (includes_values.present? && references_eager_loaded_tables?) + + if eager_loading? || (includes_values.present? && (column_name || references_eager_loaded_tables?)) construct_relation_for_association_calculations.calculate(operation, column_name, options) else perform_calculation(operation, column_name, options) @@ -155,6 +156,10 @@ module ActiveRecord column_name = "#{table_name}.#{column_name}" end + if eager_loading? || (includes_values.present? && (column_name || references_eager_loaded_tables?)) + return construct_relation_for_association_calculations.pluck(column_name) + end + result = klass.connection.select_all(select(column_name).arel, nil, bind_values) key = result.columns.first |