3

Ruby on Rails では、これを記述するより良い方法はありますか。

qty = 2
avg_price = room["price"].to_f if room["price"].present?
total_price = (avg_price * qty) if avg_price.present?

特に2行目と3行目。if-else 条件を頻繁に使用していることに気づきました。ありがとう。

4

4 に答える 4

0

ヘルパー メソッドを定義して、ハッシュから float を直接抽出できるようにするにはどうすればよいでしょうか。

class Hash
  def get_f key; fetch(key).to_f if key?(key) end # Or `if self[key].present?`
end

そして、次のようにします。

qty = 2
avg_price = room.get_f("price")
total_price = avg_price * qty if avg_price
于 2013-11-15T08:41:09.663 に答える
0

おそらく、よりオブジェクト指向のアプローチでしょうか?このアプローチにより、コードのテストが容易になり、再利用できる可能性があります。

class PriceCalculator

  def init(quantity, price)
    @quantity = quantity
    @price    = price.presence && price.to_f
  end

  def total
    @price * @quantity  if @price
  end

end

total_price = PriceCalculator.new(2, room["price"]).total
于 2013-11-15T10:42:40.027 に答える
0

これを短くするのは難しいです。

qty, avg_price, total_price = 2, nil, nil

if room["price"]
  avg_price   = Float(room["price"])
  total_price = avg_price * qty
end
于 2013-11-15T08:39:03.953 に答える