假设我使用User
创建了email:string password_digest:string
模型。
稍后我决定添加另一列type:string
。
我可以只编辑迁移文件并再次运行rake任务来更新数据库吗?
另外,我知道有rake db:rollback
命令,但是我可以指定要回滚的迁移吗?
答案 0 :(得分:0)
通常,最简单的方法是添加新迁移以添加新列。
但是,如果尚未运行迁移,则可以编辑它,然后运行它。
此外,如果您已经运行了迁移,则可以执行rake db:rollback
,然后编辑迁移,然后再次运行。 (如果迁移仅在开发模式下运行且尚未投入生产,我只会这样做。)
在指定要回滚的迁移方面,将按时间顺序应用迁移并进行回滚。如果你想回滚你做的第3次最后一次迁移,那么你必须回滚你做的最后一次,然后是倒数第二次,然后是最后一次。因此,从这个意义上讲,您无法指定要回滚的特定迁移。您必须指定迁移到“回滚到” - 即,回滚自该迁移以来发生的所有迁移。