我只需要在填充时指定属性但如果它们是nil
或{}
或''
我就不应该指定这些参数
model Section为:
particular :string default("No"), not null
color :enum default("red"), not null
只有在没有指定值的情况下,我才需要使用默认值创建。
Section.create(name: @name, particular: @particular, color: @color )
但是我用nil初始化@particular和@color我得到了这个错误:
ActiveRecord::NotNullViolation:
PG::NotNullViolation: ERROR: null value in column "particular"
我不需要在这种情况下指定获取默认值
Section.create(name: @name )
使用Hash#compact
删除null值的键:
Section.create(
{ name: @name, particular: @particular, type: @type }.compact
)
我也非常怀疑你是否想为此使用Enum类型。为了添加新的可能的值或删除现有的选项,您需要删除类型并重新添加它。
只有在可能的选项有限且不变的情况下才应该真正考虑枚举类型。