Добавление образцов данных в базу данных с помощью rake для движка rails
-
06-07-2019 - |
Вопрос
Я тестирую движки 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.