2016-05-02 96 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記錄分配任何東西(這是一個副本),它不會有任何區別。一旦嘗試保存,驗證可能會失敗,並且更改將不會保存。