2013-01-05 41 views
1

我將一個貨幣值作爲整數(美分)存儲在數據庫中,然後在視圖端進行格式化。但是,當用戶輸入諸如「175,000」之類的值時,存儲在DB中的值是「175」。它似乎停止在第一個逗號,而不是存儲其餘的零。我已經驗證(與rubular)正則表達式正確選擇任何非零或十進制值,只留下數字。我只是不確定爲什麼它停留在第一個逗號。Rails before_save回調沒有正確地從數字中刪除逗號

# model 
before_save :convert_amounts_to_cents 

def convert_amounts_to_cents 
    self.loan_amount = loan_amount.to_s.gsub(/[^0-9\.]/, "").to_i 
end 

回答

0

實際上,175和175.00在保存時代表的方式相同。最右邊的00是隱含的。

雖然,當您向用戶顯示信息時,您可以通過正確的格式選擇小數位數。

0

這是舊的ActiveModel功能,它將傳遞的值轉換爲整數,當您設置值時,在這種情況下before_save太晚了。

嘗試覆蓋loan_amount=

def amount=(amount) 
    self[:amount] = amount.to_s.gsub(/[^0-9\.]/, "").to_i 
end