私は本当にシンプルでなければならないものがありますが、それは私を殺しています。私はそう真または偽を認識しないレール
l.discount_percentage.blank?
=> false
を持って
l = LineItem.first
#<LineItem id: 5, product_id: 1, quantity: 1, price: #<BigDecimal:7f7fdb51a3f8,'0.999E3',9(18)>, cart_id: 5, discount_percentage: 10, discount_amount: nil, discount_active: true, created_at: "2012-01-12 16:17:41", updated_at: "2012-01-12 16:17:41">
、私は次の方法があります。
def total_price
discount_amount = 0 if discount_amount.blank?
discount_percentage = 0 if discount_percentage.blank?
discounted_amount_from_percent = price*(discount_percentage.to_f/100)
applicable_discount = [discount_amount,discounted_amount_from_percent].max
return (price-applicable_discount)
end
しかし、私はこれを実行します。
をl.total_price
の代わりに899を返し、それを999を返します(if discount_per centage.blank? )まったく動作しませんでした!
true/falseがView on Railsでしか機能しない場合は、構文WHATEVER_HERE?
ポストフィックス条件( 'do_something if condition')はRubyの有効な構文であり、ビューに限定されません。 – MrTheWalrus
代わりに 'self.discount_percentage'を使うとどうなりますか? –
Dave、それは問題ありませんが、問題は次のとおりです。 価格がself.priceなしでアクセスできるのであれば、なぜ私はdiscount_amountとdiscount_percentageで自己を持っている必要がありますか? –