Как я могу переместить свою базу данных с направляющими к первому пересмотру, не отбрасывая базу данных сначала?

Попробуйте это:


if ((testItem & FlagTest.Flag1) == FlagTest.Flag1)
{
    // do something
}
В основном, Ваш код спрашивает, если установка обоих флагов совпадает с установкой одного флага, который является, очевидно, ложью. Код выше оставит только набор битов Flag1, если это будет установлено вообще, затем сравнит этот результат с Flag1.
15
задан Marc-André Lafortune 13 June 2011 в 21:49
поделиться

3 ответа

rake db:migrate VERSION=0

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

Обновление: я только что протестировал это на Rails 3.2.1, и он все еще работает. Он запускает «неработающую» часть всех миграций, известных schema_migrations . Я понятия не имею, работало это на 3.1 или нет, но комментарий ниже указывает, что эта функция была сломана в то время.

25
ответ дан 1 December 2019 в 02:29
поделиться

В дополнение к (правильному) решению jdl, приведенному выше, есть еще один хитрый способ добиться этого - выполнить rake db: rollback STEP = 1000000 , где 1000000 - это большое количество, превышающее количество миграций, которое у вас когда-либо будет. Будет выполнен откат до 1000000 раз или сколько раз вы укажете STEP .

3
ответ дан 1 December 2019 в 02:29
поделиться

Это в меру хакерское, но вы можете сделать запрос, чтобы найти первую ВЕРСИЮ в schema_migrations, а затем вызвать rake db: migrate: down, чтобы получить эту ВЕРСИЮ (я предполагаю, что вы хотите чтобы упаковать сценарий «сброса» для вашего приложения).

Это, конечно, потребует, чтобы методы down во всех ваших миграциях работали правильно.

0
ответ дан 1 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: