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



为了验证我们需要的价格,我们使用以下内容

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

它工作正常,直到有人尝试输入字符串(在本例中为"FREE")。这将返回错误:

invalid value for BigDecimal(): "FREE"

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

如果它可能会帮助偶然发现这种情况的人,似乎升级 BigDecimal gem 可以解决问题

gem "bigdecimal", ">= 1.3.2"

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

最新更新