Преобразование структуры базы данных / данных в Rails - PullRequest
3 голосов
/ 17 мая 2009

Это своего рода продолжение этого вопроса: Можно ли использовать Rails Migrations для преобразования данных?

Если я работаю над веткой, которая, когда она будет реинтегрирована и выпущена в производство, изменит схему базы данных довольно радикально. Каков наилучший способ обеспечить преобразование всех данных в производстве в новый формат?

Простой пример: числовой столбец, который мы хотим изменить на текст и выполнить некоторую работу по преобразованию данных. Тогда мы хотим отбросить старую колонку.

Мне посоветовали не делать никаких манипуляций с данными при миграции, а скорее создавать для этого грабли. Существует ли механизм, обеспечивающий выполнение граблей в порядке наряду с миграциями?

Сейчас единственное решение, которое я могу придумать, - это объединить все миграции, которые отбрасывают несуществующие столбцы, во вторую коллекцию. Запустите первый набор миграций, которые добавляют новые таблицы. Запустите грабли, затем запустите второй набор миграций. Это не кажется мне идеальным решением и может легко пойти не так.

1 Ответ

2 голосов
/ 18 мая 2009

Миграции именно для такого рода вещей. Преобразование данных в базе данных для новой версии приложения, с изменением схемы или без нее, должно быть миграцией. Это является гарантией того, что новые изменения будут внесены в производство до того, как новая версия приложения будет запущена.

Когда вы работаете в ветке, просто создайте новую миграцию, которая создаст новый файл с меткой времени. Когда вы вернетесь в ветку релиза, файл будет просто скопирован. Из-за временной отметки миграции (вероятно) будут выполняться в правильном порядке.

Если преобразование, которое вы выполняете, будет время от времени выполняться, то вам следует использовать задачу Rake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...