сбой отката для миграции рельсов - PullRequest
1 голос
/ 21 августа 2011

Я сделал ошибку при редактировании миграции rails (я использую rails 3.1.0rc5).Поэтому я исправил это и попытался сделать rake db:rollback с последующим rake db:migrate db:test:prepare.Но откат по какой-то причине не удался.Вот часть отката миграции:

  def down
    drop_table :assets
  end

это ответ от db:rollback:

==  CreateAssets: reverting ===================================================
rake aborted!
An error has occurred, this and all later migrations canceled:

ActiveRecord::IrreversibleMigration

Tasks: TOP => db:rollback
(See full trace by running task with --trace)

, поэтому я просто вручную удалил таблицу ресурсов в базе данных (япросто используя sqlite3 dbs), закомментировал строку drop_table :assets и снова набрал db:rollback:

==  CreateAssets: reverting ===================================================
-- drop_table("assets")
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: no such table: assets: DROP TABLE "assets"

Tasks: TOP => db:rollback
(See full trace by running task with --trace)

Почему он пытается отбросить таблицу активов?Я закомментировал (и фактически позже удалил) эту строку drop_table :assets из миграции.Я даже сделал grep -r assets, чтобы увидеть, откуда рельсы могут получать эту команду сброса, но ничего не смог найти.

Итак, мой вопрос: как мне выполнить повторную миграцию?И мне любопытно, откуда rails получает эту команду сброса?

UPDATE : Оказывается, что rails 3.1 на самом деле не смотрит на класс миграции 'down метод при откате!Он просматривает команды миграции метода change и обращает их вспять.Вот почему rake db:rollback пытался удалить таблицу ресурсов даже после того, как я удалил инструкцию drop_table :assets!Как я это исправил, я изменил метод change на старый метод rails 3.0 style up.Затем рельсы посмотрели на метод down, из которого я удалил команду drop_table, и откат прошел успешно.

1 Ответ

2 голосов
/ 21 августа 2011

Миграции изменились с последними рельсами, особенно в обратном порядке.
Я думаю, http://shardul.wordpress.com/2012/01/25/reversible-migrations/ предоставит вам необходимую информацию и опции.

Кстати, у меня было много проблем с 3.1. rc кандидаты (например, rc4, rc5) и должны были оставаться на уровне 3.0.9 для стабильных новых приложений прямо сейчас.

...