私はユーザが入力するフォームフィールドがあります。Rails Way:モデルに設定する前に値を書式設定しますか?
- パーセント:
50.5%
- お金:
$144.99
- 日付:
Wednesday, Jan 12th, 2010
...
percent
とmoney
をタイプ属性はdecimal
フィールドとして保存されますActiveRecordで、日付はdatetime
またはdate
フィールドです。
javascriptでフォーマットを変換するのは簡単ですし、理論的にはactiverecordの許容フォーマットonsubmit
に変換することもできますが、それはまともな解決策ではありません。
私はActiveRecordのアクセサをオーバーライドするようにしたいので、設定されていると、任意の文字列から適切な形式に変換されますが、それはベストではありません。私はしたくない何
は、コントローラにこのような何かを必要とする別のプロセッサオブジェクトを介して、それらを実行する必要がある。
def create
# params == {:product => {:price => "$144.99", :date => "Wednesday, Jan 12, 2011", :percent => "12.9%"}}
formatted_params = Product.format_params(params[:product])
# format_params == {:product => {:price => 144.99, :date => Wed, 12 Jan 2011, :percent => 12.90}}
@product = Product.new(format_params)
@product.save
# ...
end
、それは完全に透明にするために私がしたいと思います。私はこれを行うことができますので、ActiveRecordのフックはどこですかRails Way?
更新
私は今のためにこれをやっている:https://gist.github.com/727494
class Product < ActiveRecord::Base
format :price, :except => /\$/
end
product = Product.new(:price => "$199.99")
product.price #=> #<BigDecimal:10b001ef8,'0.19999E3',18(18)>
アプリで再びこの値を編集する場合はあなたが行うどんなプロセス例えば、このプロセスは双方向にするために、この作品 –