Обработка нуля в качестве нуля в функции суммы

У меня есть модель Продавца, у которой есть элементы _many.

Я хочу получить общую цену продажи всех предметов Продавца.

В seller.rb у меня есть

def total_item_cost 
  items.to_a.sum(&:sale_price)
end

Это работает отлично, если все товары имеют цену продажи.
Однако, если они еще не были проданы, sale_price равен нулю, а total_item_cost прерывается.

В моем приложении sale_price может быть либо нулем, либо нулем.

В моем методе total_item_cost, как я могу обрабатывать значения nil как нули?

Ответ 1

Один из способов:

items.to_a.sum { |e| e.sale_price.to_i } # or to_f, whatever you are using

Методы типа #to_f и #to_i превратят nil в 0.

Ответ 2

items.map(&:sale_price).compact.sum

или

items.map(&:sale_price).sum(&:to_i)

Ответ 3

Отклонить значения nil. items.to_a.reject{|x| x.sales_price.nil?}.sum(&:sale_price)