Rails货币验证

时间:2015-04-23 12:45:30

标签: ruby-on-rails

如何在rails中编写验证,以便允许以下可能的价格值

100或$ 100或100.00或$ 100.00

我已在我的模型中将价格字段声明为 Float

我目前的代码如下:

验证:价格,数字:真实

不允许保存100之类的值。

1 个答案:

答案 0 :(得分:4)

您可以在format方法中添加validates选项。

validates :price, numericality: true,
          :format => { :with => /^\d{1,6}(\.\d{0,2})?$/ 

这将允许带有可选小数位的最高$ 999999.99的值(如果存在小数,则必须跟随不超过2位。)

但与其他已经提到的一样 - 它不是将这些值保存到数据库中的最佳选择。

我可以推荐RubyMoney gem来处理货币。