2016-05-02 29 views
-2

fee_emailが正であることを私のモデルで指定していますが、user.fee_email = -1を設定することはできません。Rails:validates 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。それは動作しません。

検証は、データベースに保存しようとすると機能します。記録されたレコードに何かを割り当てることができます(これはコピーです)。違いはありません。保存しようとすると、検証は失敗し、変更は保存されません。

関連する問題