Если у меня есть две миграции, mig1 и mig2, я запускаю rake db:migrate, затем возвращаюсь к mig1 и изменяю значение столбца по умолчанию, будет ли это изменение отражено, когда я снова запускаю rake db:migrate? Или мне нужно сделать новую миграцию только для этого столбца, чтобы внести изменения?
Миграции Rails — искать изменения в старых миграциях?
Ответы (2)
Вы должны либо выполнить новую миграцию, либо использовать задачу rake db:rollback
, чтобы вернуться к версии вашей базы данных до того, как была запущена рассматриваемая миграция. Изменения в сценариях миграции не будут приняты автоматически.
Текущая версия вашей схемы отслеживается и применяется к миграциям, поэтому запуск rake db:migrate не приведет к повторному запуску старых миграций. Именно по этой причине вы можете использовать функцию rollback
, если вы предоставили правильные self.down
методы миграции. Откат выполняет эти методы вниз, отменяя миграции по мере их прохождения.
Затем вы можете отредактировать миграцию и выполнить повторную миграцию.
person
Zachary Wright
schedule
05.08.2010
rake db:migrate:redo VERSION=____
person
Tom Maeckelberghe
schedule
30.12.2010