我有一个有很多项目的卖家模型。
我想获得卖家所有商品的总售价。
在seller.rb 我有
def total_item_cost
items.to_a.sum(&:sale_price)
end
如果所有物品都有销售价格,这很好用。
但是,如果它们尚未售出,sale_price
则为零并且total_item_cost
休息。
在我的应用程序中,sale_price
可以是零或零。
在我的total_item_cost
方法中,如何将nil
值视为零?
我有一个有很多项目的卖家模型。
我想获得卖家所有商品的总售价。
在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.map(&:sale_price).compact.sum
或者
items.map(&:sale_price).sum(&:to_i)
一种方法是:
items.to_a.sum { |e| e.sale_price.to_i } # or to_f, whatever you are using
#to_f
和之类的方法#to_i
会nil
变成0
.
拒绝零值。items.to_a.reject{|x| x.sales_price.nil?}.sum(&:sale_price)
假设 sales_price 是数据库中的一列:
items.sum(:sales_price)