2012-05-04 53 views
15

我为Rails 3应用程序编写了一些迁移,但我想更改迁移的顺序。我如何更改迁移顺序或顺序?它是否像重新命名迁移文件一样简单?看起来是什么时间戳?Rails迁移更改顺序或顺序

我知道这是一个奇怪的问题,但基本上,我弄乱了我的迁移并删除了一些旧的迁移,现在我需要在创建新迁移之前删除一个表。我也知道我可以在create-the-new-table迁移中包含drop语句,但我很想知道如何重新排序迁移。

回答

15

是的,它会按照前缀的顺序运行尚未运行的迁移。在早期版本的rails中,可能是2.12.2,它们以前从01开始编号,但它们切换为时间戳。

有一个表跟踪哪些迁移已经运行。其意图是,我已经添加了多个开发人员,并在稍后的版本控制中对其进行了检查。所以,可能会有一个没有运行的迁移,但是在已经运行的最高编号的迁移之前编号。

如果您更改迁移顺序(和我已经),则最好在所有要重新排序的迁移之前先下载版本。与db:migrate一起使用VERSION选项。如果要保留的最高编号的迁移(不运行向下)是20120318143249,请以此方式调用它。

rake db:migrate VERSION=20120318143249 

我经常在迁移过程中运行失败,并重新运行它,直到获得迁移的详细信息以满意为止。有时我会重新排列它们,当我想要对其中一个进行操作时,我希望它是最后一个。

4

是的,文件名前缀是决定执行顺序。但是,请记住,如果您擦除数据库/重新开始,这将只会更改您的当前系统。

+0

并非总是如此。假设后面的迁移是可逆的,你可以按照@ Marlin-Pierce的建议'rake db:migrate VERSION = ' – varleti