Вопрос

У меня есть 4 связанные миграции в моем приложении Rails:

Первые 3 миграции создают по одной таблице каждая в self.up и и отбрасывают их в соответствующие методы self.down.

4-я миграция запускает задачу rake, которая загружает данные во все три (в self.up).Я думаю, что добавить в self.что делать с этой миграцией, чтобы удалить строки из 3 таблиц?

Я делаю это неправильно?Вероятно, следовало создать одну миграцию, где я создаю 3 таблицы и загружаю данные в self.up и просто удаляю все три таблицы в методе self.down?

Это было полезно?

Решение

Это неправильно!

Миграции следует использовать только для переноса ваших данных Модель не твой Данные.

Rails 2.3.4 добавляет "семена".Это файл в db/seeds.rb, содержащий ruby-код для "начальной загрузки" вашей базы данных.Это отличный способ создать полустатический контент для вашей базы данных, такой как категории, справочные таблицы или учетные записи пользователей.

Затем вы можете загрузить исходные данные с помощью простого задания rake

rake db:seed

Другие советы

На самом деле нет правильного или неправильного способа сделать это. Исходя из того, что вы сделали, 4-я миграция должна просто выгружать данные в методе down. Каждое падение должно отменять только действия вверх.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top