は、ここで私は私のモデルに使用しているものです:Railsで検証する前に値からドル記号を削除するにはどうすればよいですか?
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として終了します。誰かが私が間違っていることをキャッチする?
金額は浮動小数点数として保存するのではなく、データベースの小数点以下の桁数とルビのBigDecimalとして保存してください。浮動小数点数には丸め誤差があり、予期しない結果が生じる可能性があります。 – DGM