Ответ 1
Rails создает таблицу в вашей базе данных под названием schema_migrations
, чтобы отслеживать, какие миграции выполнялись.
В таблице содержится один столбец version
. Когда Rails запускает миграцию, она берет ведущие цифры в имени файла миграции и вставляет строку для этой "версии", указывая, что она была запущена. Если вы откатите эту миграцию, Rails удалит соответствующую строку из schema_migrations
.
Например, запуск файла миграции с именем 20120620193144_create_users.rb
будет вставлять новую строку с версией 20120620193144
в таблицу schema_migrations
.
Вы можете в любой момент ввести миграции с более ранними версиями. Rails всегда будет запускать любые новые миграции, для которых в schema_migrations
нет соответствующей строки. Ведущие цифры не должны быть меткой времени, вы можете назвать свою миграцию 001_blah.rb
. Ранние версии Rails использовали этот формат и использовали последовательную нумерацию для вновь созданных миграций. Более поздние версии переключились на временные метки, чтобы помочь нескольким разработчикам самостоятельно генерировать миграции с тем же номером.