1

我将货币值作为整数(美分)存储在数据库中,然后在视图端对其进行格式化。但是,当用户输入“175,000”之类的内容时,存储在 DB 中的值为“175”。它似乎停在第一个逗号处,而不是存储其余的零。我已经验证(使用 rubular)正则表达式正确选择任何非零或十进制值并只留下数字。我只是不确定为什么它一直停在第一个逗号处。

# 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
4

2 回答 2

0

那是旧的 ActiveModel 功能,它在设置值时将传递的值转换为整数,所以before_save在这种情况下为时已晚。

尝试覆盖loan_amount=

def amount=(amount)
  self[:amount] = amount.to_s.gsub(/[^0-9\.]/, "").to_i
end
于 2013-01-05T14:55:47.800 回答
0

实际上,保存时 175 和 175.00 的表示方式相同。最右边的 00 是隐含的。

但是,当您向用户显示信息时,您可以通过适当的格式选择小数位数。

于 2013-01-05T14:44:16.117 回答