添加具有默认值的列
以下示例将 admin
列添加到 users
表,并为该列提供默认值 false
。
class AddDetailsToUsers < ActiveRecord::Migration[5.0]
def change
add_column :users, :admin, :boolean, default: false
end
end
使用默认值进行迁移可能需要很长时间才能在大型表中使用 PostgreSQL。这是因为必须使用新添加的列的默认值更新每一行。为了避免这种情况(并减少部署期间的停机时间),你可以将迁移分为三个步骤:
- 添加类似于上面的
add_column
-migration,但不设置默认值 - 在应用程序运行时,在 rake 任务或控制台上部署和更新列。确保你的应用程序已将数据写入该列以获取新的/更新的行。
- 添加另一个
change_column
迁移,然后将该列的默认值更改为所需的默认值