diff options
author | Andrey Deryabin <deriabin@gmail.com> | 2012-04-27 10:15:28 +0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-06-19 20:51:52 -0300 |
commit | 1f98493e4a3c53e53666ff740860b20dcd6d08ec (patch) | |
tree | 585f979e6a50d1389cba835f6803996b0444cf55 /activerecord/lib | |
parent | 7b6efb9cda9571d4d764c55a6ce100b04f172a8e (diff) | |
download | rails-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')
-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 |