我想向数据库中现有的列添加一个默认值,这是我的尝试:
add_column :users, :gamelv1, :integer, default: 1
我添加了default: 1
并运行了rake db:migrate
,但是当我检查gamelv1
列的默认值时,它仍然是nil
。我添加的值1
未保存。
如何为我的列设置默认值?
发布于 2016-05-24 21:29:28
default
值仅在第一次创建记录时应用。现有记录不会受到default
更改的影响。您可以通过执行以下操作在迁移中手动应用此默认值:
add_column :users, :gamelv1, :integer, default: 1
User.reset_column_information
User.where(gamelv1: nil).update_all(gamelv1: 1)
这将查找gamelv1
为nil (在数据库中为空)的所有记录,并将更新这些记录,使gamelv1
具有默认值1
。这样,您的数据将与数据库结构同时迁移,因此,无论记录是在何时创建的,您的应用程序都会按照您的预期运行。
https://stackoverflow.com/questions/37423598
复制相似问题