Миграции Rails — искать изменения в старых миграциях?

Если у меня есть две миграции, mig1 и mig2, я запускаю rake db:migrate, затем возвращаюсь к mig1 и изменяю значение столбца по умолчанию, будет ли это изменение отражено, когда я снова запускаю rake db:migrate? Или мне нужно сделать новую миграцию только для этого столбца, чтобы внести изменения?


person brianfoshee    schedule 05.08.2010    source источник


Ответы (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