aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorAndrey Deryabin <deriabin@gmail.com>2012-04-27 10:15:28 +0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-06-19 20:51:52 -0300
commit1f98493e4a3c53e53666ff740860b20dcd6d08ec (patch)
tree585f979e6a50d1389cba835f6803996b0444cf55 /activerecord/lib/active_record
parent7b6efb9cda9571d4d764c55a6ce100b04f172a8e (diff)
downloadrails-1f98493e4a3c53e53666ff740860b20dcd6d08ec.tar.gz
rails-1f98493e4a3c53e53666ff740860b20dcd6d08ec.tar.bz2
rails-1f98493e4a3c53e53666ff740860b20dcd6d08ec.zip
handle joins/includes correctly for pluck and calculation.
Fix #5990
Diffstat (limited to 'activerecord/lib/active_record')
-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