我在我的项目中使用 enumerize gem,当我将其添加到列中时,我想在其中允许 nil 值,我的测试中断了,但控制台上的插入没有中断。
MY_TYPES = ['foo',
'baz',
'bar'].freeze
enumerize :my_column, in: MY_TYPES,
default: nil,
scope: :shallow,
presence: false
当我尝试向
my_column
添加 nil 值时,会出现 ActiveRecord 验证:
*** ActiveRecord::RecordInvalid Exception: Validation failed: My tipes is not included in the list
但是如果我修改
rails console
中的值,则可以毫无问题地分配 nil 值。
我一直在尝试使用
allow_blank: true
、allow_nil: true
,最近还尝试使用 presence: false
选项。
如有任何帮助,我们将不胜感激。
根据文档,默认添加包含验证。您需要添加
skip_validation
,然后自己添加 allow_nil
包含验证:
enumerize :my_column, in: MY_TYPES, skip_validations: true, ...
validates :my_column, inclusion: MY_TYPES, allow_nil: true