【发布时间】:2021-05-25 06:03:37
【问题描述】:
我有一个带有以下字段的 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'
)
有没有更好的方法来创建这样的记录?也许是模型内部的一些方法?
【问题讨论】:
-
这作为枚举字段可能会更好。见stackoverflow.com/a/63018877/2981429
-
该死,现在不知道为什么,但在
rails new test_app --skip-test --database=postgresql之后,它会用6.0.3.5创建我的rails。如果我知道我会使用 6.1 -
after_saved 回调会做,或者创建数据后调用的任何回调
-
设置默认列值是可行的方法。维护起来并不难。 ActiveRecord 对此也很聪明,并在实例化该模型的实例时将其用作默认值,因此
Portfolio.new.status => 'draft'
标签: ruby-on-rails ruby