Rails (Mongoid) 模型中的条件默认值

Conditional default value in Rails (Mongoid) model

这看起来有点矛盾,一个 "conditional default," 但我想知道是否有一种方法可以轻松处理仅在对象不是特定对象的情况下为字段设置默认值类型。

例如,我有

field :object_type, type: String
field :price, type: Float, default: 0
validates :price, presence: true, numericality: { greater_than_or_equal_to: 0 }

如果我可以添加诸如 unless: ->{ object_type == "a"} 之类的条件并处理此内联,那就太好了。 rails 会允许吗?还是我现在必须使用 before_create 回调设置此条件默认值?

我想要发生的伪代码:

使用 proc 是前往此处的方式

field :object_type, type: String
field :price, type: Float, default: proc { object_type== "a" ?  nil : 0}
validates :price, presence: true, numericality: { greater_than_or_equal_to: 0 }