Как использовать файл YAML вместо seeds.rb для загрузки исходных данных в базу данных?
Ruby on Rails: загрузка данных семени из файла YAML
Ответ 1
Посмотрите руководство Ruby on Rails на светильники:
http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures
Как правило, вы можете создавать файлы ярлыков YAML в каталоге test/
а затем загружать их в свою базу данных с помощью команды rake db:fixtures:load
. Полная документация по всем крутым вещам, которые вы можете сделать с приборами, приведена здесь:
Ответ 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