私は、いくつかの異なるモデルに価格がある単純な小売商取引ソリューションを作成しています。これらの価格は合計価格に影響します。ヨーグルトのトッピングを選択するために 0.30 ドル余分に支払うことを想像してみてください。
price
フィールド を
t.decimal :price, precision:8, scale:2
データベース6.50
は6.5
. 標準的な Rails の方法でnumber_to_currency(price)
は、ビューでフォーマットされた値を取得するために呼び出します。price
適切にフォーマットされた文字列、つまり、ビューの直接の一部ではないいくつかの場所で $6.50 など、プログラムでフィールドを呼び出す必要があります。また、私のニーズは単純です (通貨換算などはありません)。 ビューで number_to_currency を繰り返し呼び出すことなく、価格をモデルで普遍的にフォーマットすることを好みます。
getter の価格を変更して、常にドル記号付きの小数点以下 2 桁、つまり $6.50 を返すようにする良い方法はありますか?
前もって感謝します。
アップデート
みんな、ありがとう。
数字をフォーマットするためだけにインクルードを行うのは非常に「ハック」に思えるので、私はアレックスのアプローチを使用することにしました。彼のアプローチを使用して、私は次のことを行いました。
def price_change=(val)
write_attribute :price_change, val.to_s.gsub(/[\$]/,'').to_d
end
def price_change
"$%.2f" % self[:price_change]
end
乾杯。
更新 2
買い手責任負担。これを行うと、数値が文字列になるため、数値に対して操作を実行できなくなります。
私と同じように困っている人がいたら気をつけてください。