module ActiveRecord::Calculations
def sum(identity_or_column = nil, &block)
#calculate for examples with options.
with the same data type of the column, +0+ if there's no row. See
Calculates the sum of values on a given column. The value is returned
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