Миграции базы данных Rails

Миграции это удобный способ привести вашу базу данных к структурированной и организованной основе. Можно вручную править фрагменты SQL, но вы тогда ответственны сказать другим разработчикам, что они должны тоже выполнить это. Вам также нужно будет вести список изменений, которые нужно вносить каждый раз, когда проект развертывается на новой машине или реальном сервере.

Active Record отслеживает, какие миграции уже были выполнены, поэтому все, что нужно сделать, это обновить свой исходный код и запустить rake db:migrate. Active Record сам определит, какие миграции нужно запустить, проверив скрытую таблицу базы данных schema_migrations, автоматически создаваемую при изначальном вызове rake db:migrate. schema_migrations содержит единственный столбец с именем versions, содержащий временные метки, с которых начинаются созданные миграции Active Record. Каждая временная метка, содержащаяся в schema_migrations, показывает, что миграция, связанная с временной меткой, была вызвана ранее, и не должна быть вызвана при будующих вызовах rake db:migrate. Он также обновит ваш файл db/schema.rb в соответствии с новой структурой вашей базы данных.

Миграции также позволяют вам описать эти изменения на Ruby. Очень хорошо, что это (как и большая часть функциональности Active Record) полностью не зависит от базы данных: вам не нужно беспокоиться о точном синтаксисе CREATE TABLE или особенностей SELECT * (как в случае, если вы пишите на чистом SQL, когда надо учитывать особенности разных баз данных). Например, вы можете использовать SQLite3 при разработке, а на рабочем приложении MySQL.

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