私のモデルで使用しているものは次のとおりです。
before_validation :strip_dollar_sign
validates :amount_due,
:format => { :with => /^\d+??(?:\.\d{0,2})?$/ },
:numericality => {:greater_than => 0}
private
def strip_dollar_sign
self.amount_due = self.amount_due.to_s.tr!('$,','').to_f
end
Rails コンソールで strip_dollar_sign 関数の行を手動で実行すると、まさに希望どおりの結果が得られます (つまり、$400 は最終的に 400.0 になります) が、アプリで実際のフォームを使用すると、値は常に 0.0 になります。誰かが私が間違っていることをキャッチしますか?