为了验证我们需要的价格,我们使用以下内容
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/