Как удалить файлы миграции в Rails 3

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

кроме того, я должен сделать db:reset или db:drop если я удаляю / удаляю миграцию?

8 ответов


Я обычно:

  1. выполнить rake db:migrate VERSION=XXX во всех средах, до версии перед той, которую я хочу удалить.
  2. удалите файл миграции вручную.
  3. если есть ожидающие миграции (т. е. миграция, которую я удалил, не была последней), я просто выполняю новый rake db:migrate еще раз.

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

еще одна отличная ссылка для миграции:http://guides.rubyonrails.org/migrations.html


другой способ удалить миграцию:

$ rails d migration SameMigrationNameAsUsedToGenerate

перед rake db:migrate выполняется, потому что изменения в базе данных останутся навсегда :) - или удалите изменения вручную


выполните следующие команды из домашнего каталога приложения:

  1. rake db:migrate:down VERSION="20140311142212" (здесь версия является меткой времени, добавленной rails при создании миграции. Это действие вернет изменения БД из-за этой миграции)

  2. Run "rails destroy migration migration_name" (migration_name-это тот, который используется при создании миграции. Удалить"timestamp_ " от имени файла миграции, чтобы получить его)


мы можем использовать

$ rails d migration table_name  

который удалит миграцию.


мы также можем снизить миграцию как

rake db:migrate:down VERSION=versionnumber

см. Rubyonrailsguide


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


посмотрите на 4.1 откат

http://guides.rubyonrails.org/migrations.html

$ rake db: откат


У меня была такая же проблема:

  1. рельсы D миграции fuu -это исключить миграцию с последней меткой времени
  2. рельсы D миграции fuu - это удалило другую миграцию
  3. используйте статус git, чтобы проверить, что больше нет в неотслеживаемых файлах
  4. рельсы G миграции fuu

это исправило это для меня