如何在 Rails 中编写验证以允许以下可能的价格值
100 或 100 美元或 100.00 或 100.00 美元
我已在模型中将价格字段声明为Float
我当前的代码如下所示:
验证:价格,数字:true
这不允许保存像 100 这样的值。
您可以将该format选项添加到您的validates方法中。
validates :price, numericality: true,
format: { with: /^\d{1,6}(\.\d{0,2})?$/ }
Run Code Online (Sandbox Code Playgroud)
这将允许高达 $999999.99 的值,并带有可选的小数位(如果存在小数点,则后面的位数不得超过 2 位。)
但就像其他人已经提到的那样 - 将这些值保存到数据库中并不是最佳选择。
我可以向您推荐用于处理货币的RubyMoney gem 。
| 归档时间: |
|
| 查看次数: |
2858 次 |
| 最近记录: |