下面是我用在我的模型是什麼:如何在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