このように数値を検証する整数フィールドを持つMongoid モデルを定義しました
# source.rb
class Source
field :code, type: Integer
validates_numericality_of :code, allow_nil: true
allow_nil の目的は、存在するフィールドを検証し、nil 値を無視することです。
しかし、ここでは、allow_nil は数値チェックを完全にバイパスします。
object = Source.new
object.code = "ABC"
object.valid?
=> true
object
=> #<Source _id: 50d00b2d81ee9eae46000001, _type: nil, code: 0>
アクティブレコードでは、これは正しく機能します
object = Source.new
object.code = "ABC"
object.valid?
=> false
object
=> #<Source id: nil, code: 0, created_at: nil, updated_at: nil>
object.save
(0.1ms) begin transaction
(0.1ms) rollback transaction
=> false