私は価格は、いくつかの異なるモデルである簡単な小売商取引ソリューションを、作っています。これらの価格は合計のに寄与します。あなたのヨーグルトのトッピングを選択するための$ 0.30をもっと支払うと想像してください。私は、データベース格納しRailsの - 通貨形式としてフォーマット番号ゲッターで
t.decimal :price, precision:8, scale:2
に6.5
として6.50
をprice
フィールドを設定
。私は標準的な方法で、number_to_currency(price)
と呼んで、ビューでフォーマットされた値を取得することを知っています。プログラマチックにprice
フィールドと書式設定された文字列、つまりビューの一部ではない$ 6.50の部分を呼び出す必要があります。また、私のニーズは単純で(通貨換算などはありません)、ビューでnumber_to_currencyを繰り返し呼び出すことなく、モデルに普遍的にフォーマットされた価格を持つことを好みます。
は、私はそれを呼び出してたときに、それは常に、すなわち$ 6.50ドル記号を持つ2つの小数点以下の桁数を返すような価格のための私のゲッターを変更することができる良い方法はありますか?
ありがとうございます。
UPDATE
みんなありがとう。
私はそれだけで数をフォーマットするための含まれを行うには非常に「ハック」と思われるので、アレックスのアプローチを使用することを選択しました。彼のアプローチを使用して、私はした:
def price_change=(val)
write_attribute :price_change, val.to_s.gsub(/[\$]/,'').to_d
end
def price_change
"$%.2f" % self[:price_change]
end
乾杯。
UPDATE 2
買主の危険負担。一旦これを行うと、それは今や文字列になっているので、数字への操作を行う能力が失われます。
誰も私と同じ問題に直面している場合は注意してください。あなたの完全な制御を超える与え
def price
"$%.2f" % self[:price]
end
:
感謝を見てください!いくつかの数値書式が組み込まれている必要があると考えていました。モデルにActionViewまたはActionControllerを含めるのを少し注意しました。 –
この問題は、価格を数字として使うことができないことです。どこでも文字列です。私はレールヘルパーをto_sでこのように変換する方法を探しています – Joelio