aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/calculations.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/relation/calculations.rb')
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb7
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