Как откатить конкретную миграцию? - PullRequest
724 голосов
/ 06 сентября 2010

У меня есть следующий файл миграции db\migrate\20100905201547_create_blocks.rb

Как конкретно откатить этот файл миграции?

Ответы [ 13 ]

2 голосов
/ 10 октября 2018

Чтобы откатить всех миграций до определенной версии (например, 20181002222222), используйте:

rake db:migrate VERSION=20181002222222

(Обратите внимание, что здесь используется db:migrate - не db:migrate:down как и в других ответах на этот вопрос.)

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

Например, если rake db:migrate:status изначально отображает:

  (... some older migrations ...)
  up      20181001002039  Some migration description
  up      20181002222222  Some migration description
  up      20181003171932  Some migration description
  up      20181004211151  Some migration description
  up      20181005151403  Some migration description

Запуск:

rake db:migrate VERSION=20181002222222

Результатом будет:

  (... some older migrations ...)
  up      20181001002039  Some migration description
  up      20181002222222  Some migration description
  down    20181003171932  Some migration description
  down    20181004211151  Some migration description
  down    20181005151403  Some migration description

Ссылка: https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations

2 голосов
/ 20 июля 2016

Что ж, в rails 5 это довольно просто: rake db: migrate: status или rails db: migrate: status

Он был изменен для обработки обоих типов, затем просто выберите версию, которую вы хотите откатить, и затемзапустите rake db: migrate VERSION = 2013424230423

Убедитесь, что VERSION содержит все заглавные буквы

Если у вас возникли проблемы с каким-либо шагом миграции или он застрял в середине, просто перейдите в файл миграции изакомментируйте строки, которые уже были перенесены.

Надеюсь, это поможет

1 голос
/ 11 июня 2015

Если вы хотите выполнить откат и миграцию, вы можете выполнить:

rake db:migrate:redo

Это так же, как:

rake db:rollback
rake db:migrate
...