枚举rails不允许nil值

问题描述 投票:0回答:1

我在我的项目中使用 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
选项。

如有任何帮助,我们将不胜感激。

ruby-on-rails ruby backend enumerize
1个回答
0
投票

根据文档,默认添加包含验证。您需要添加

skip_validation
,然后自己添加
allow_nil
包含验证:

enumerize :my_column, in: MY_TYPES, skip_validations: true, ...
validates :my_column, inclusion: MY_TYPES, allow_nil: true
© www.soinside.com 2019 - 2024. All rights reserved.