Как обновить миграции при обновлении из приложения Rails 1.2.3? - PullRequest
5 голосов
/ 10 февраля 2012

Я обновляю приложение Rails 1.2.3 до версии 3.2.1.

Я пытаюсь выяснить, как я могу обновить структуру миграции, чтобы она была совместима с последней версией Rails, чтобы в идеале вы могли просто запустить rake db:migrate при настройке приложения. В настоящее время я решил эту проблему, выполнив rake db:migrate:up VERSION=[version_number] любой миграции, которую мне нужно запустить. Если я просто запускаю rake db:migrate, он пытается перезапустить все миграции с самого начала и останавливается (так как эти миграции уже были выполнены в дампе базы данных, который у меня есть).

Миграции в приложении выглядят следующим образом 001_add_some_model.rb, 002_add_some_other_model.rb вместо 20120209182512_add_some_model.rb.

У кого-нибудь есть опыт с этим? Как я могу это исправить?

Ответы [ 3 ]

7 голосов
/ 10 февраля 2012

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

2 голосов
/ 08 мая 2013

Не рекомендуется запускать все миграции для настройки новой базы данных даже в современном приложении Rails 3. Это объясняется в db / schema.rb:

Обратите внимание, что это определение schema.rb является официальным источником для вашего схема базы данных. Если вам нужно создать базу данных приложения на другом система, вы должны использовать db: schema: load, не выполняя все миграции с нуля. Последний является ошибочным и неустойчивым подходом (чем больше миграций вы будете накапливаться, чем медленнее он будет работать и тем больше вероятность возникновения проблем).

0 голосов
/ 15 мая 2013

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

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

Это просто еще один способ сделать это и отражает мое собственное видение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...