0

属性と仮想属性を持つCommercialDocumentモデルがあります。discount_amountdiscount_amount_with_tax

モデルでこれを定義した方法は次のとおりです。

def discount_amount_with_tax
  discount_amount * (1 + tax.rate / 100)
end

def discount_amount_with_tax=(amount)
  self.discount_amount = amount.to_f / (1 + tax.rate / 100)
end

私のフォームでは、ユーザーは と の両方discount_amountを入力できdiscount_amount_taxます。

= f.label :discount_amount
= f.text_field :discount_amount
= f.text_field :discount_amount_with_tax

フィールドを優先したいのですが、それは、他のフィールドが空でない限り考慮されてはならないことdiscount_amount_with_taxを意味します。discount_amount

discount_amount_with_tax私の問題は、フィールドに何も入れず、たとえば 10 をdiscount_amountdiscount_amountすると、 が 0 に等しくなるということです。これは明らかに私が望んでいるものではありません。

どうすればこれを修正できますか?

どんな助けでも大歓迎です。

4

2 に答える 2