Как удалить файлы миграции в Rails 3
Я хотел бы удалить / удалить файл миграции. Как мне это сделать? Я знаю, что здесь есть похожие вопросы, но как обновление, есть ли лучший способ, чем делать скрипт/уничтожить?
кроме того, я должен сделать db:reset
или db:drop
если я удаляю / удаляю миграцию?
8 ответов
Я обычно:
- выполнить
rake db:migrate VERSION=XXX
во всех средах, до версии перед той, которую я хочу удалить. - удалите файл миграции вручную.
- если есть ожидающие миграции (т. е. миграция, которую я удалил, не была последней), я просто выполняю новый
rake db:migrate
еще раз.
Если ваше приложение уже находится на производстве или промежуточном этапе, безопаснее просто написать другую миграцию, которая уничтожает вашу таблицу или столбцы.
еще одна отличная ссылка для миграции:http://guides.rubyonrails.org/migrations.html
другой способ удалить миграцию:
$ rails d migration SameMigrationNameAsUsedToGenerate
перед rake db:migrate
выполняется, потому что изменения в базе данных останутся навсегда :) - или удалите изменения вручную
выполните следующие команды из домашнего каталога приложения:
rake db:migrate:down VERSION="20140311142212"
(здесь версия является меткой времени, добавленной rails при создании миграции. Это действие вернет изменения БД из-за этой миграции)Run "rails destroy migration migration_name"
(migration_name-это тот, который используется при создании миграции. Удалить"timestamp_ " от имени файла миграции, чтобы получить его)
иногда я обнаружил, что удаляю файл миграции, а затем удаляю соответствующую запись в таблице schema_migrations из базы данных. Не очень красиво, но работает.
У меня была такая же проблема:
- рельсы D миграции fuu -это исключить миграцию с последней меткой времени
- рельсы D миграции fuu - это удалило другую миграцию
- используйте статус git, чтобы проверить, что больше нет в неотслеживаемых файлах
- рельсы G миграции fuu
это исправило это для меня