BigDecimal验证会在非数字值上引发错误

时间:2017-01-16 23:51:33

标签: ruby-on-rails ruby

要验证我们需要的价格,我们使用以下

  validates :price, numericality: {greater_than_or_equal_to: 0.01, less_than_or_equal_to: 2000}

直到有人试图输入字符串(在此示例中为“FREE”),它才能正常工作。 这将返回错误:

invalid value for BigDecimal(): "FREE"

有没有一种干净的方法来验证这一点而不会返回500错误?

1 个答案:

答案 0 :(得分:1)

如果它可能帮助那些偶然发现这种情况的人,似乎升级BigDecimal宝石解决了问题

gem "bigdecimal", ">= 1.3.2"

参考:https://jamescrisp.org/2017/09/26/bigdecimal-fix-for-rails-4-with-ruby-2-4/