Regex 保存回调之前的Rails没有正确地从数字中去掉逗号

Regex 保存回调之前的Rails没有正确地从数字中去掉逗号,regex,ruby-on-rails-3,callback,gsub,Regex,Ruby On Rails 3,Callback,Gsub,我将货币值作为整数存储在数据库中,然后在视图端对其进行格式化。但是,当用户输入175000之类的值时,存储在DB中的值是175。它似乎在第一个逗号处停止,而不存储其余的零。我已经用rubular验证了正则表达式是否正确地选择了任何非零或十进制值,并且只保留了数字。我只是不知道为什么它总是停在第一个逗号 # model before_save :convert_amounts_to_cents def convert_amounts_to_cents self.loan_amount = l

我将货币值作为整数存储在数据库中,然后在视图端对其进行格式化。但是,当用户输入175000之类的值时,存储在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

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


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

这是旧的ActiveModel功能,当您设置值时,它会将传递的值转换为整数,因此在这种情况下,“保存前”为时已晚

尝试覆盖贷款金额=:

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