Rails 迁移添加一个 null: false 列,其初始值不是正在进行的默认值

Rails migration add a null: false column with an initial value that's not an ongoing default

我有一个我不喜欢的迁移:

    add_column :employers, :address_line_1, :string
    add_column :employers, :address_city, :string
    add_column :employers, :address_postcode, :string

    change_column_null :employers, :address_line_1, false, '123 default street'
    change_column_null :employers, :address_city, false, 'Default City'
    change_column_null :employers, :address_postcode, false, '123456'

使 add_column 行具有 null: false 是无效的,因为我有现有记录,并且我不想要任何默认值(除了在这次迁移时)。

能否在单行代码中为列添加初始值(但不是默认值)?

“可以在单行代码中为列添加初始值(但不是默认值)吗?”

没有。但是,“change_column_null”可以在迁移中使用,而第四个参数实际上是在不更改数据库中的“默认值”的情况下为空列设置一个值。

https://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column_null