默认值未保存到数据库

时间:2016-05-24 20:49:13

标签: ruby-on-rails ruby ruby-on-rails-3

我想在数据库的现有列中添加一个默认值,这是我的尝试:

add_column :users, :gamelv1, :integer, default: 1

我添加了default: 1并运行rake db:migrate,但是当我检查gamelv1列的默认值时,它仍然是nil。我添加的值1未保存。

如何为我的列设置默认值?

1 个答案:

答案 0 :(得分:2)

default值仅在首次创建记录时应用。现有记录不受default更改的影响。您可以在迁移中手动应用此默认值:

add_column :users, :gamelv1, :integer, default: 1

User.reset_column_information

User.where(gamelv1: nil).update_all(gamelv1: 1)

这将找到gamelv1为零的所有记录(数据库中为null),并将更新这些记录,以使gamelv1具有默认值1。这样,您的数据就会与数据库结构同时迁移,这样您的应用就会按预期运行,无论记录何时创建。