Добавление образцов данных в базу данных с помощью rake для движка rails

StackOverflow https://stackoverflow.com/questions/1612409

Вопрос

Я тестирую движки Rails, создавая движок объявлений, где пользователи могут просматривать / публиковать / отвечать на объявления.

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

Теперь я хочу добавить некоторые примеры данных в базу данных для движка объявлений.Итак, я создал файл rake под названием "sample_classifieds_data.rake" в "vendor / plugins/classifieds/lib /tasks" и добавил файлы yml в "vendor /plugins/classifieds/lib /tasks/sample_classifieds_data"

Код файла rake и пример файла yml можно найти здесь: http://gist.github.com/216776

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

Есть какие-нибудь идеи?Кстати, это среда разработки, а база данных - это база данных разработки.

Я выполнил аналогичную задачу rake для заполнения выборки пользователей в базе данных, которая сработала.расположение этого файла rake 'sample_data.rake' было расположено в 'lib /tasks'.

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

Решение

Ваша задача выглядит хорошо. Единственное, что может заставить вашу задачу молча завершиться ошибкой, это то, что файл, который вы передаете в Fixture.new, не указывает на файл yml или csv.

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

Например, ничего не произойдет, если ваши файлы фикстур начинаются с заглавной буквы? Categories.yml вместо Categories.yml

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

В рельсах вы можете использовать функцию rake db: seed для добавления данных в вашу базу. Просмотреть коммит .

Использование довольно простое.

Создайте файл db / seed.rb .
И поместите в него любой код, который хотите заполнить своей базой данных.

Например:

Category.create!(:name => 'My Category')
Country.create!(:name => 'Cassoulet Land')

А если вы хотите заполнить свою базу данных, вы можете сделать rake db: seed

Если по какой-либо причине вы не хотите использовать ребро (что было бы приемлемо в производственной среде), вы можете использовать Seed Fu , который вполне подойдет вам.

Задача db:seed была добавлена в Rails 2.3.4.Так что нет необходимости запускать edge.

http://weblog.rubyonrails.org/2009/9/4/ruby-on-rails-2-3-4

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