Как правильно использовать db / seeds.rb в рельсах 3 - PullRequest
1 голос
/ 11 августа 2011

Когда мой текущий проект начался, я все еще изучал RoR, и у нас был более опытный парень, который руководил организацией нашего проекта (куда идут файлы, что мы делаем для работы с проектом).Он утверждал, что когда у вас есть начальные данные для таблиц, вы помещаете эти начальные данные в сами миграции.И он также утверждал, что db / seed.rb использовался только для настройки тестовой базы данных между тестами при выполнении юнитов или AT (мы используем rspec и cucumber соответственно).

Недавно я читал различные ответы здесьэто подразумевает, что мы делаем это неправильно, и я надеюсь, что кто-то здесь может дать мне более глубокое объяснение того, что «Rails Way» для этого.

спасибо!

РЕДАКТИРОВАТЬ:

Несколько вещей, которые мне нужно понять:

a.Как я могу убедиться, что эти посеянные данные находятся в базе данных для испытаний.Мне сказали, что тесты rspec очищают базу данных, помещая тест в транзакцию и в конце просто откатывая эту транзакцию, так что, если это правда, тестовая база данных будет заполнена перед полным запуском тестов?Что является причиной посева.

rake db:test:prepare

, похоже, не заполняет базу данных, хотя я могу ошибаться

b.нужно ли на самом деле запускать

rake db:migrate
rake db:seed

после того, как будет введена миграция, которая требует добавления новых начальных данных в db / seed.rb?

с.Нужно ли включать каждую отдельную часть заполнения с проверками, чтобы удостовериться, что это необходимо, чтобы я не получал исключений при повторном запуске семян и, например, нарушениях уникальности при попытке повторного заполнения для ранее посеянных вещей.(что приводит к вопросу, является ли этот вопрос даже синтаксически правильным ??).

Я думаю, что вещь, которая привела «нашего парня» на путь посева в миграциях, заключается в том, что мы можем рассчитывать на всемеханизм миграции, чтобы не перезапускать предыдущие семена, а не проверять все в seed.rb перед попыткой семян ...

Надеюсь, это понятнее ...

1 Ответ

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

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

просто это задача с граблями, которая всасывает данные, указанные в db / seed.rb.

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