rails数据库迁移问题

时间:2014-04-18 21:35:07

标签: ruby-on-rails ruby

好的,所以我做了rake db:migrate,但我需要添加另一个属性。所以我想我只是将它添加到迁移文件中,然后再添加rake db:migrate。但是我注意到它只是让我回到命令行。如果我提交表单,则会抛出错误的未知属性。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

第一次运行rake db:migrate时,表在数据库中创建,因为您运行的迁移文件现在具有状态up。您可以通过触发rake db:migrate:status命令来检查迁移状态。

现在,在将新字段添加到同一迁移后,当您运行rake db:migrate时,rake任务将无法获取您的迁移文件。仅使用down命令执行状态为rake db:migrate的迁移。

你需要做的是,

选项1:回滚更改

如果您在迁移的表中没有任何重要数据,并且可以删除该表并重新创建它,那么您可以回滚特定的迁移。 rollback运行以下来自db的更改:

rake db:rollback version = version_number

使用您的迁移文件的前缀替换version_number。例如,如果您尝试回滚文件20140125190622_create_users.rb的更改,请运行

rake db:rollback version = 20140125190622

在此之后,在迁移文件中添加新字段并运行rake db:migrate

选项2:增量迁移

创建新迁移以在表格中添加新字段。运行以下命令:

rails generate migration AddFieldNameToTableName field_name:data_type

例如:在username

中添加users字段

rails generate migration AddUsernameToUsers username:string

此次运行rake db:migrate后,新字段将添加到您的表格中。