Ruby on Rails: загрузка начальных данных из файла YAML - PullRequest
14 голосов
/ 08 августа 2011

Как использовать файл YAML вместо seed.rb для загрузки исходных данных в базу данных?

Ответы [ 3 ]

22 голосов
/ 25 июля 2014

Добавьте код в db/seeds.rb для анализа файла YAML, например ::100100

seed_file = Rails.root.join('db', 'seeds', 'categories.yml')
config = YAML::load_file(seed_file)
Category.create!(config)

Затем просто поместите YAML-тьфу в db/seeds/categories.yml. Файл YAML должен быть списком ассоциативных массивов, например ::

- name: accessory
  shortcode: A

- name: laptop
  shortcode: L

- name: server
  shortcode: S
4 голосов
/ 08 августа 2011

Ознакомьтесь с Руководством по Ruby on Rails для приборов:

http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures

Как правило, вы можете создавать файлы приборов YAML в каталоге test/, а затем загружать их в базу данных, используякоманда rake db:fixtures:load.Полная документация обо всех интересных вещах, которые вы можете сделать с приборами, находится здесь:

http://api.rubyonrails.org/classes/Fixtures.html

2 голосов
/ 06 августа 2015

Я использовал ответ @Zaz ответил.Это работает очень хорошо.

Но в то же время, если что-то пошло не так с вашими начальными данными (например, у вас очень большой исходный файл yaml), вы хотели бы знать, какая часть вашего yaml пошла не так.В это время вы можете добавить блок после создания!для отладки вот так:

seed_file = Rails.root.join('db', 'seeds', 'categories.yml')
config = YAML::load_file(seed_file)
counter = 0
Category.create!(config) do |c|
  puts "Create category #{counter += 1} with name: #{c.name}"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...