aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/associations/collection_proxy.rb6
-rw-r--r--activerecord/lib/active_record/null_relation.rb4
-rw-r--r--activerecord/test/cases/associations/has_many_associations_test.rb1
3 files changed, 7 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/associations/collection_proxy.rb b/activerecord/lib/active_record/associations/collection_proxy.rb
index e044099b72..1b746b46b7 100644
--- a/activerecord/lib/active_record/associations/collection_proxy.rb
+++ b/activerecord/lib/active_record/associations/collection_proxy.rb
@@ -28,6 +28,8 @@ module ActiveRecord
# is computed directly through SQL and does not trigger by itself the
# instantiation of the actual post records.
class CollectionProxy < Relation
+ delegate *ActiveRecord::Calculations.public_instance_methods, to: :scope
+
def initialize(association) #:nodoc:
@association = association
super association.klass, association.klass.arel_table
@@ -965,10 +967,6 @@ module ActiveRecord
proxy_association.reload
self
end
-
- def pluck(column_names)
- scope.pluck(column_names)
- end
end
end
end
diff --git a/activerecord/lib/active_record/null_relation.rb b/activerecord/lib/active_record/null_relation.rb
index f8f7a6c976..711fc8b883 100644
--- a/activerecord/lib/active_record/null_relation.rb
+++ b/activerecord/lib/active_record/null_relation.rb
@@ -50,6 +50,10 @@ module ActiveRecord
0
end
+ def sum(*)
+ 0
+ end
+
def calculate(_operation, _column_name, _options = {})
nil
end
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb
index baf07f352e..aae93bb9d0 100644
--- a/activerecord/test/cases/associations/has_many_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_associations_test.rb
@@ -1656,6 +1656,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
assert_equal [], post.comments
assert_equal [], post.comments.where(body: 'omg')
assert_equal [], post.comments.pluck(:body)
+ assert_equal 0, post.comments.sum(:id)
end
end
end