好的,所以我做了rake db:migrate
,但我需要添加另一个属性。所以我想我只是将它添加到迁移文件中,然后再添加rake db:migrate
。但是我注意到它只是让我回到命令行。如果我提交表单,则会抛出错误的未知属性。我在这里错过了什么吗?
答案 0 :(得分:0)
第一次运行rake db:migrate
时,表在数据库中创建,因为您运行的迁移文件现在具有状态up
。您可以通过触发rake db:migrate:status
命令来检查迁移状态。
现在,在将新字段添加到同一迁移后,当您运行rake db:migrate
时,rake任务将无法获取您的迁移文件。仅使用down
命令执行状态为rake db:migrate
的迁移。
你需要做的是,
如果您在迁移的表中没有任何重要数据,并且可以删除该表并重新创建它,那么您可以回滚特定的迁移。 rollback
运行以下来自db的更改:
rake db:rollback version = version_number
使用您的迁移文件的前缀替换version_number
。例如,如果您尝试回滚文件20140125190622_create_users.rb
的更改,请运行
rake db:rollback version = 20140125190622
在此之后,在迁移文件中添加新字段并运行rake db:migrate
。
创建新迁移以在表格中添加新字段。运行以下命令:
rails generate migration AddFieldNameToTableName field_name:data_type
例如:在username
表
users
字段
rails generate migration AddUsernameToUsers username:string
此次运行rake db:migrate
后,新字段将添加到您的表格中。