24

has_manyItemsのセラーモデルがあります。

売り手のすべてのアイテムの合計販売価格を取得したい。

Seller.rbで私は持っています

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

すべてのアイテムにセール価格がある場合、これは正常に機能します
ただし、まだ販売されていない場合sale_priceは、ゼロとtotal_item_cost休憩です。

私のアプリでsale_priceは、nilまたは0のいずれかになります。

私の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

1 つの方法は次のとおりです。

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

#to_fやのようなメソッド#to_iは に変わりnilます0

于 2013-03-07T16:50:26.203 に答える
3

nil 値を拒否します。items.to_a.reject{|x| x.sales_price.nil?}.sum(&:sale_price)

于 2013-03-07T16:46:51.787 に答える