Ruby on Rails: загрузка данных семени из файла YAML

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

Ответ 1

Посмотрите руководство 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

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

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

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

- name: accessory
  shortcode: A

- name: laptop
  shortcode: L

- name: server
  shortcode: S

Ответ 3

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

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

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