如何在rails中编写验证,以便允许以下可能的价格值
100或$ 100或100.00或$ 100.00
我已在我的模型中将价格字段声明为 Float
我目前的代码如下:
验证:价格,数字:真实
不允许保存100之类的值。
答案 0 :(得分:4)
您可以在format
方法中添加validates
选项。
validates :price, numericality: true,
:format => { :with => /^\d{1,6}(\.\d{0,2})?$/
这将允许带有可选小数位的最高$ 999999.99的值(如果存在小数,则必须跟随不超过2位。)
但与其他已经提到的一样 - 它不是将这些值保存到数据库中的最佳选择。
我可以推荐RubyMoney gem来处理货币。