0

我正在寻找一些 yml :

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

而且我想制作一个Topic对象,并将ItemType 和 Style 中的所有单词组合在一起。

这些词中的每一个都有一个type属性,它会说明它是 astyle还是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 回答