instance method
sum
Ruby on Rails 7.0.10
Since v3.0.20Signature
sum(identity_or_column = nil, &block)
Calculates the sum of values on a given column. The value is returned with the same data type of the column, 0 if there’s no row. See #calculate for examples with options.
Person.sum(:age) # => 4562
Parameters
-
identity_or_columnopt = nil -
blockblock
Source
# File activerecord/lib/active_record/relation/calculations.rb, line 127
def sum(identity_or_column = nil, &block)
if block_given?
values = map(&block)
if identity_or_column.nil? && (values.first.is_a?(Numeric) || values.first(1) == [] || values.first.respond_to?(:coerce))
identity_or_column = 0
end
if identity_or_column.nil?
ActiveSupport::Deprecation.warn(<<-MSG.squish)
Rails 7.0 has deprecated Enumerable.sum in favor of Ruby's native implementation available since 2.4.
Sum of non-numeric elements requires an initial argument.
MSG
values.inject(:+) || 0
else
values.sum(identity_or_column)
end
else
calculate(:sum, identity_or_column)
end
end
Defined in activerecord/lib/active_record/relation/calculations.rb line 127
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Calculations