Как выполнить миграцию из ветки Git на Heroku, если более поздняя миграция из другой ветки уже была выполнена?

Скажем, я создаю ветку (new_branch). В этой ветке создается миграция (migration_1).

Позже я снова переключаюсь на master. Затем я создаю миграцию (migration_2), отправляю в Heroku и запускаю миграции в Heroku.

Еще позже я объединяю new_branch в master, а затем отправляю master в Heroku.

Когда я попытаюсь запустить миграцию на Heroku, не будет ли migration_1 пропущено и не запущено, потому что оно было создано до migration_2, который уже был запущен?


person ben    schedule 03.10.2012    source источник


Ответы (1)


К каждой миграции прикреплена метка времени миграции. Список успешно примененных миграций хранится в таблице схемы внутри вашего приложения Rails.

Когда вы запускаете migration_2, эта запись добавляется в базу данных. Когда migration_1 объединено, Rails обнаружит, что изменение еще не было применено, потому что запись отсутствует в таблице схемы, и запустит его.

person Simone Carletti    schedule 03.10.2012
comment
Итак, я уже отметил это как ответ, но у меня есть вопрос. Как этот ответ совместим с ответами в this один? Там консенсус заключается в том, что предполагается, что все миграции до номера версии схемы уже выполнены. - person ben; 09.10.2012
comment
guides.rubyonrails.org/migrations.html#what-s- in-a-name, кажется, согласен с ответом Симоны. - person Ben Coppock; 21.12.2012