ruby-on-rails 如何创建一个带有动态参数的新对象?

35g0bw71  于 2023-04-13  发布在  Ruby
关注(0)|答案(1)|浏览(133)

我只需要在属性被填充时指定它们,但是如果它们是nil{}'',我不应该指定这些参数
模型部分是:

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 )
bjp0bcyl

bjp0bcyl1#

使用Hash#compact删除具有空值的键:

Section.create(
  { name: @name, particular: @particular, type: @type }.compact
)

我也非常怀疑你是否想使用枚举类型来实现这个功能。为了添加新的可能值或删除现有的选项,你需要删除该类型并重新添加它。
只有当可能的选项是有限的且不变的时,才应该真正考虑枚举类型。

相关问题