Rails种子数据嵌套数组

时间:2015-11-11 10:46:58

标签: ruby-on-rails ruby

我正在努力用嵌套数组制作种子数据。 我有一个VatClass模型,其属性名称为valid_from,value。

vat_classes = [ ["empty", "1.1.2007", 0.0], ["reduced", "1.1.2007", 7.0], ["full", "1.1.2007", 19.0]]
vat_classes.each do |vat_class|
  vat_class.each do |inner_element|
    VatClass.where(name: inner_element[0]).first_or_create do |e| # pseudocode
      VatClass.create(name: inner_element[0], valid_from: inner_element[1], vat_value: inner_element[2])
    end
  end
end

如果数据库中没有任何具有相同名称的先前记录,那么它应该基于vat_classes数组创建一个。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

第二个迭代器是多余的:

vat_classes = [ 
  ["empty", "1.1.2007", 0.0],
  ["reduced", "1.1.2007", 7.0],
  ["full", "1.1.2007", 19.0]
]

vat_classes.each do |vat_class|
  VatClass.where(name: vat_class[0]).first_or_create do |e|
    # no create is needed anymore: it is already created
    e.update_attributes!(valid_from: vat_class[1], vat_value: vat_class[2])
  end
end

希望它有所帮助。