Предположим, у вас есть «lineitems», и вы использовали для определения «make» off line_item.Перенос данных при миграции Rails
В конце концов вы понимаете, что make, вероятно, должен быть на собственной модели, поэтому вы создаете модель Make.
Затем вы хотите удалить столбец make из таблицы line_items, но для каждого line_item с make вы хотите find_or_create_by (line_item.make).
Как я мог бы сделать это в миграции рельсов? Я почти уверен, что могу просто запустить простую find_or_create_by для каждого line_item, но я беспокоюсь о резервной поддержке, поэтому я просто размещал это здесь для любых советов/советов/правильного направления.
Спасибо!
Транзакционные миграции доступны только в том случае, если поставщик базы данных поддерживает его. MySQL, например, не обеспечивает транзакционный DDL, поэтому оператор raise приведет к сбою миграции и оставит базу данных в противоречивом состоянии. – Cluster
Если вы добавите в том, что говорит кластер, возможно, разделите его на две миграции, добавьте новый столбец в один и сделайте все, что вам нужно. Во втором, когда пыль осела, удалите все столбцы, которые вам больше не нужны. Это не идеально, но даст вам путь назад. – Ghoti