Ответ 1
Один из способов:
items.to_a.sum { |e| e.sale_price.to_i } # or to_f, whatever you are using
Методы типа #to_f
и #to_i
превратят nil
в 0
.
У меня есть модель Продавца, у которой есть элементы _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
как нули?
Один из способов:
items.to_a.sum { |e| e.sale_price.to_i } # or to_f, whatever you are using
Методы типа #to_f
и #to_i
превратят nil
в 0
.
items.map(&:sale_price).compact.sum
или
items.map(&:sale_price).sum(&:to_i)
Отклонить значения nil. items.to_a.reject{|x| x.sales_price.nil?}.sum(&:sale_price)