この "199,99" のような価格を float または decimal としてデータベースに保存したいと考えています。
「、」を「。」に置き換えようとしました。フィルター前のモデルで。
ただし、価格は「199.00」として before フィルターに渡されます。
モデルクラスでそれを変換する方法はありますか? コントローラーでこれを行う方法は知っていますが、モデルでどのように行うことができますか?
ご協力いただきありがとうございます。
この "199,99" のような価格を float または decimal としてデータベースに保存したいと考えています。
「、」を「。」に置き換えようとしました。フィルター前のモデルで。
ただし、価格は「199.00」として before フィルターに渡されます。
モデルクラスでそれを変換する方法はありますか? コントローラーでこれを行う方法は知っていますが、モデルでどのように行うことができますか?
ご協力いただきありがとうございます。
number_to_currency ヘルパーと適切なロケールを使用する必要があります
または、ロケールをいじりたくない場合は、区切り記号を明示的に宣言します。
number_to_currency(value_from_db, :unit => "$;", :separator => ".", :delimiter => " ", :format => "%u %n")
これを行う正しい方法は、db値をそのままにして、ビューレイヤーでヘルパーメソッドを作成して、好みのフォーマットで金額を表示することだと思います
基本的な考え方は、アプリケーションヘルパーにあります
module ApplicationHelper
#p for price, just to keep things simple
def p(amount)
amount.gsub(".",",")
end
end
そしてあなたの見解では
<%= p(object.price) %>
このアプローチのもう 1 つの欠点は、価格を として保存すると123,34
、後で計算を行うことができなくなることです。
HTH