Добавление примеров данных в базу данных с помощью граблей для движка рельсов - PullRequest
2 голосов
/ 23 октября 2009

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

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

Теперь я хочу добавить несколько примеров данных в базу данных для механизма объявлений. Поэтому я создал файл rake 'sample_classifieds_data.rake' в 'vendor / plugins / adss / lib / tasks' и добавил файлы yml в 'vendor / plugins / columns / lib / tasks / sample_classifieds_data'

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

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

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

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

Ответы [ 3 ]

9 голосов
/ 23 октября 2009

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

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

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

Например:

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

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

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

1 голос
/ 23 октября 2009

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

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

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

0 голосов
/ 23 октября 2009

Задача db: seed была добавлена ​​в Rails 2.3.4. Так что не надо бегать по краям.

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

...