如何制作自定义种子Rakefile

时间:2012-07-31 04:22:00

标签: ruby-on-rails yaml seed

我想要一些yml:

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

我想为类型和样式中的所有单词组合生成Topic对象和Item对象。

这些字词中的每一个都会有一个type属性,如果它是stylecolor

主题有一个HABTM with Items,所以我也想构建这个连接。

但是不要让别人通过一个巨大的答案,我只是在寻找解析这个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对象?

1 个答案:

答案 0 :(得分: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