使用Rails创建带有草稿状态的新记录

21 浏览
0 Comments

使用Rails创建带有草稿状态的新记录

我有一个具有以下字段的投资组合模型:

名称:字符串(必填)

状态:字符串(必填),可选值为:草稿、活动、已获资金

其中一个要求是新创建的投资组合应该具有草稿状态。我可以在迁移中设置一个默认值,类似于:

创建表格:portfolios do |t|

t.string :name, null: false

t.string :status, null: false, default: 'draft'

t.timestamps

end

但我认为这样很难维护。当然,我可以在创建方法中设置此状态,例如:

Portfolio.create!(

name: params[:name],

status: 'draft'

)

有没有更好的方法来创建这样的记录?也许模型内部有一些方法吗?

0
0 Comments

Rails create new record with draft status

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

问题的原因:在创建新记录时,希望默认将其状态设置为“草稿”,但是默认情况下,Rails会将其状态设置为空。

解决方法:使用after_initialize回调来设置默认值,以确保在对象的生命周期的早期阶段就有默认值存在。

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

通过使用after_initialize回调,可以确保在对象的生命周期的早期阶段就将默认值设置为"草稿",从而解决了默认状态为空的问题。

Portfolio.new.name
#应该返回"草稿"

0