вопрос по базе данных seed.rb - PullRequest
1 голос
/ 01 апреля 2011

Если у меня есть следующий код, определенный внутри db / seed.rb,

default_car=Car.create({:name=>'TOYOTA'})
User.create({:username=>'default_user', car_id=>default_car.id})

Я знаю, что экземпляры default_car и user будут сохранены в базе данных при запуске " rake db: seed ".

У меня вопрос: если я снова запущу ' rake db: seed ' , снова и снова (несколько раз), будут ли одни и те же экземпляры сохраняться в базе данных с несколькими копиями он только один раз сохраняет экземпляр в базе данных, независимо от того, сколько раз я запускаю rake db: seed ?

Ответы [ 3 ]

5 голосов
/ 11 апреля 2011

Лучшее решение:

default_car = Car.find_or_create_by_name 'TOYOTA'
user = User.find_or_create_by_username 'default_user'
user.car = default_car
user.save

Таким образом, вы можете запускать "rake db: seed" несколько раз без необходимости каждый раз удалять базу данных вручную.

0 голосов
/ 25 апреля 2011

Это ограничение наличия одного исходного файла. Я обнаружил, что это разочаровывает по мере роста приложения, вы часто хотите добавлять новые начальные данные, чтобы в конечном итоге вы либо делали то, что предлагает Паскаль, либо создавали миграции с данными в них, или выполняли задачи по загрузке начальных чисел. Чтобы обойти это, я выбил seedbank . Таким образом, я комбинирую это с подходом Паскаля, так что я могу повторно запустить семена, но также могу прицелиться в определенные, если я хочу.

0 голосов
/ 01 апреля 2011

зависит от ваших моделей, если вы разрешите повторяющиеся значения. если вы этого не сделаете, он выдаст ошибку. то, что вы делаете, это сначала очищаете базу данных перед запуском seed через rake db: resetdb

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