2016-05-02 63 views
-2

我不能设置user.fee_email = -1,但即使在我的模型中指定的fee_email应该是正数,我也可以。Rails:验证greater_than_or_equal_to 0不起作用

考虑:

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)> 

回答

1

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

1

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

当您尝试将其保存在数据库中时进行验证。你可以给retreived记录分配任何东西(这是一个副本),它不会有任何区别。一旦尝试保存,验证可能会失败,并且更改将不会保存。