Rails:验证greater_than_or_equal_to 0不起作用

时间:2016-05-02 10:37:03

标签: ruby-on-rails activerecord

我无法设置user.fee_email = -1,但我可以,即使我在模型中指定numericality fee_email应为正。

假设:

class User < ActiveRecord::Base
  validates :fee_email, numericality: { greater_than_or_equal_to: 0 }
...
end

这不应该发生:

2.2.1 :002 > a = User.first
2.2.1 :003 > a.fee_email
 => #<BigDecimal:43cbbe0,'0.0',9(27)> 
2.2.1 :004 > a.fee_email = -1
 => -1 
2.2.1 :005 > a.fee_email
 => #<BigDecimal:43b5688,'-0.1E1',9(27)> 

2 个答案:

答案 0 :(得分:1)

尝试保存。 a.save。它不会工作。

尝试将其保存在数据库中时验证工作。您可以为检索记录分配任何内容(这是副本),它不会有任何区别。尝试保存后,验证可能会失败,并且不会保存更改。

答案 1 :(得分:1)

由于您未调用验证,请致电a.valid?a.invalid?a.save以调用验证并使用a.errors检查错误消息。