24

我有一个有很多项目的卖家模型。

我想获得卖家所有商品的总售价。

在seller.rb 我有

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

如果所有物品都有销售价格,这很好用。
但是,如果它们尚未售出,sale_price则为零并且total_item_cost休息。

在我的应用程序中,sale_price可以是零或零。

在我的total_item_cost方法中,如何将nil值视为零?

4

4 回答 4

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

或者

items.map(&:sale_price).sum(&:to_i)
于 2013-03-07T17:09:50.363 回答
39

一种方法是:

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

#to_f和之类的方法#to_inil变成0.

于 2013-03-07T16:50:26.203 回答
3

拒绝零值。items.to_a.reject{|x| x.sales_price.nil?}.sum(&:sale_price)

于 2013-03-07T16:46:51.787 回答
0

假设 sales_price 是数据库中的一列:

items.sum(:sales_price)
于 2022-02-24T22:10:28.900 回答