/ / Перетворення структури бази даних / Дані в рейках - рубін на рейках, міграція

Перетворення структури бази даних / даних у регіонах - рубіни на рейках, міграція

Це своєрідне продовження цього питання: Чи може міграція Rails використовувати для перетворення даних?

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

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

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

Зараз єдине рішення, про яке я можу придумати, - це зробитиз’єднайте всі міграції, які перекидають стовпчики, що відпадають, у другу колекцію. Запустіть перший набір міграцій, який додає нові таблиці. Виконайте завдання граблі, а потім запустіть другий набір міграцій. Це не здається ідеальним рішенням для мене і могло легко піти не так.

Відповіді:

2 для відповіді № 1

Міграції саме для цього матеріалу. Перетворення даних у базу даних для нової версії програми із зміною схеми або без неї має бути міграцією. Це гарантія того, що нові зміни відбудуться у виробництві до того, як нова версія додатка буде запущена.

Коли ви працюєте у філії, просто створітьнова міграція, яка створить новий файл з печаткою часу. Коли ви знову об'єднаєтесь у гілку випуску, файл буде просто скопійовано. Через часову позначку міграції (ймовірно) виконуватимуться у правильному порядку.

Якщо конверсія, яку ви робите, все ж буде періодично виконуватись, то вам слід скористатися завданням Rake.