2014-02-14 4 views
1

Я взял рубиновое приложение, которое использовало несколько миграций для обновления данных в столбце. Есть ли способ удалить это из миграции, не затрагивая какие-либо рубиновые откаты в миграции.ruby: как удалить миграцию с обновлением таблицы

благодаря Мэггс

+0

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

ответ

0

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

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

Еще одно возможное решение - настроить обновление, чтобы сделать его идемпотентным - то есть независимо от того, сколько раз оно выполняется, оно не должно изменять результат. Это может иметь форму заявления if. В псевдокоде

+0

Привет, миграция обновлений не должна повредить, поскольку значения, которые уже были обновлены, должны оставаться неизменными, но просто вызывать изменение значения кем-либо, тогда я не хочу его менять, когда я запускаю миграцию. Что касается того, чтобы сделать обновление импотентом, что было бы лучшим способом сделать это для обновления, где все записи таблицы были обновлены. ответы, которые вы дали, являются ценными, так много спасибо maggs – maggs

+0

Итак, точка незначительной ясности, идемпотент - это слово! Импотент отличается от другого: P Что касается лучшего способа убедиться, что все не изменилось, вам нужно придумать логику, чтобы сообщить Ruby, когда нужно выполнить действие, а когда нет. Если вы не можете выразить это программно, я не вижу, как это будет сделано. – muttonlamb

+0

спасибо за небольшую ясность lol – maggs

Смежные вопросы