Rails 创建具有草稿状态的新记录

时间:2021-02-22 23:53:17

标签: ruby-on-rails ruby

我有一个包含以下字段的 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'
)

有没有更好的方法来创建这样的记录?也许是模型内部的某种方法?

1 个答案:

答案 0 :(得分:1)

class Portfolio < ApplicationRecord
  after_initialize do
    self.name = "draft"
  end
end 

我认为最好使用 after_initialize ,因为这个回调将保证默认值从对象生命周期的一开始就存在

Portfolio.new.name
#shoudl give you draft