1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Remove unnecessary count method for collection proxy

Simply use its own method because `CollectionProxy` inherits `Relation`.
This commit is contained in:
Ryuta Kamizono 2016-09-04 07:12:39 +09:00
parent ce97dc1abf
commit 8ad03c97da
2 changed files with 14 additions and 36 deletions

View file

@ -183,31 +183,6 @@ module ActiveRecord
end end
end end
# Returns the number of records. If no arguments are given, it counts all
# columns using SQL. If one argument is given, it counts only the passed
# column using SQL. If a block is given, it counts the number of records
# yielding a true value.
def count(column_name = nil)
return super if block_given?
relation = scope
if association_scope.distinct_value
# This is needed because 'SELECT count(DISTINCT *)..' is not valid SQL.
column_name ||= reflection.klass.primary_key
relation = relation.distinct
end
value = relation.count(column_name)
limit = options[:limit]
offset = options[:offset]
if limit || offset
[ [value - offset.to_i, 0].max, limit.to_i ].min
else
value
end
end
# Removes +records+ from this association calling +before_remove+ and # Removes +records+ from this association calling +before_remove+ and
# +after_remove+ callbacks. # +after_remove+ callbacks.
# #

View file

@ -743,6 +743,20 @@ module ActiveRecord
end end
alias uniq distinct alias uniq distinct
def calculate(operation, column_name)
null_scope? ? scope.calculate(operation, column_name) : super
end
def pluck(*column_names)
null_scope? ? scope.pluck(*column_names) : super
end
##
# :method: count
#
# :call-seq:
# count(column_name = nil, &block)
#
# Count all records. # Count all records.
# #
# class Person < ActiveRecord::Base # class Person < ActiveRecord::Base
@ -762,17 +776,6 @@ module ActiveRecord
# perform the count using Ruby. # perform the count using Ruby.
# #
# person.pets.count { |pet| pet.name.include?('-') } # => 2 # person.pets.count { |pet| pet.name.include?('-') } # => 2
def count(column_name = nil, &block)
@association.count(column_name, &block)
end
def calculate(operation, column_name)
null_scope? ? scope.calculate(operation, column_name) : super
end
def pluck(*column_names)
null_scope? ? scope.pluck(*column_names) : super
end
# Returns the size of the collection. If the collection hasn't been loaded, # Returns the size of the collection. If the collection hasn't been loaded,
# it executes a <tt>SELECT COUNT(*)</tt> query. Else it calls <tt>collection.size</tt>. # it executes a <tt>SELECT COUNT(*)</tt> query. Else it calls <tt>collection.size</tt>.