我应该如何创建一个新的对象与动态参数?



我只需要在填充时指定属性但如果它们是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类型。为了添加新的可能的值或删除现有的选项,您需要删除类型并重新添加它。

只有在可能的选项有限且不变的情况下才应该真正考虑枚举类型。

最新更新