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

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

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

Ответы

Ответ 1

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

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

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

rake db:migrate VERSION=20120318143249

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

Ответ 2

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