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:
parent
ce97dc1abf
commit
8ad03c97da
2 changed files with 14 additions and 36 deletions
|
@ -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.
|
||||||
#
|
#
|
||||||
|
|
|
@ -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>.
|
||||||
|
|
Loading…
Reference in a new issue