我有一个包含以下字段的 portfolio
模型:
name: string (required)
status: string (required) one of: draft, active, funded
其中一项要求是新创建的投资组合应具有状态草稿。我可以在迁移中设置一个默认值,例如:
create_table :portfolios do |t|
t.string :name, null: false
t.string :status, null: false, default: 'draft'
t.timestamps
end
但我认为维护起来并不容易。当然,我可以在 create 方法中设置此状态,例如:
Portfolio.create!(
name: params[:name],
status: 'draft'
)
有没有更好的方法来创建这样的记录?也许是模型内部的某种方法?
答案 0 :(得分:1)
class Portfolio < ApplicationRecord
after_initialize do
self.name = "draft"
end
end
我认为最好使用 after_initialize ,因为这个回调将保证默认值从对象生命周期的一开始就存在
Portfolio.new.name
#shoudl give you draft