Последовательность или порядок изменения миграции Rails

Я написал несколько миграций для моего приложения Rails 3, но я хотел бы изменить порядок миграций. Как изменить порядок или последовательность миграции? Это так же просто, как переименование файла миграции с тем, что кажется меткой времени?

Я знаю, что это странный вопрос, но в основном, я сделал беспорядок моих миграций и удалил некоторые старые миграции, и теперь мне нужно удалить таблицу, прежде чем создавать новую. Я также знаю, что могу включить оператор drop в создайте миграцию новой таблицы, но мне интересно узнать, как изменить порядок миграций.

2 ответов


Да, он запускает миграции, которые не были запущены в порядке префикса. В более ранних версиях rails, возможно 2.1 или 2.2, они были пронумерованы, начиная с 01, но они переключились на временные метки.

существует таблица, которая отслеживает, какие миграции были запущены. Намерение состоит в том, что несколько разработчиков добавили миграции и проверили их в управлении версиями позже. Таким образом, может быть миграция, которая не запущена, но пронумерована перед самая высокая пронумерованная миграция.

если вы измените последовательность миграции, (и у меня есть) лучше сначала вниз версию до всех миграций вы повторно последовательности. Используйте С db:migrate. Если самая высокая перенумерованная миграция, которую вы хотите сохранить (не запускать вниз), -20120318143249, назовем это так.

rake db:migrate VERSION=20120318143249

Я часто запускаю вниз на миграции, и повторно запустить его, пока я не получу детали миграции к моему удовлетворению. Иногда Я переупорядочивайте их, когда я хочу работать над одним из них, и я хочу, чтобы он был последним.


да, префикс имени файла определяет порядок выполнения. Однако имейте в виду, что это изменит вашу текущую систему только в том случае, если вы очистите свой DB/start over.