0

私はいくつかのymlを取ることを探しています:

My Random Name of a Topic:
  Color:
    Brown
    Blue
    Green
  Style:
    Thin
    Fat

そして、オブジェクトと、タイプとスタイルのすべての単語を組み合わせたTopicオブジェクトを作成したいと思います。Item

それらの単語のそれぞれにtype属性がありstyleます。color

トピックにはアイテムを含むHABTMがあるので、この接続も構築したいと思います。

しかし、誰かに巨大な答えを耕すように頼まないでください、私は単にこのyamlを解析するための最良の方法を探しています:

task glass_full_of_yaml: :environment do
  File.open(Rails.root + 'lib/words/glass_full_of.yml', 'r') do |file|
    YAML::load(file).each do |record|
      debugger
      # Item.create!(type: record, name: record)
    end
  end
end

すべてのトピックの名前が異なる場合、ネストされた属性を選択して、それらからItemオブジェクトを作成するにはどうすればよいですか?

4

1 に答える 1

2

クイック&ダーティ:

YAML::load(file).each do |topic, item_types|
  Topic.create! :name => topic, :items => item_types.map { |type, names|
    names.split(' ').map { |name|
      Item.new :type => type, :name => name
    }
  }.flatten
end
于 2012-07-31T04:35:50.883 に答える