动态定义CSV属性

时间:2014-10-09 06:46:22

标签: ruby-on-rails ruby csv ruby-on-rails-4

以下是CSV导入程序。它运行得很好,但我想通过动态定义行来使其更加健壮。

如何替换属性" name"使用我在执行CSV之前定义的属性?

For example:- name: row[1] --> name: row[attribute]

上面的例子提示错误陈述"没有将String隐式转换为整数",这显然是正确的。

以下是代码。

import_attribute = import_dimension.import_attributes.first
attribute = import_attribute.name

CSV.foreach(Rails.root.join('tmp','uploads', csv_path), col_sep: import_source.csv_delimiter,
  row_sep: :auto, skip_blanks: true, headers: false) do |row|

    target.create company: self.import_source.company, code: row[0], name: row[1]
end

1 个答案:

答案 0 :(得分:0)

您可以使用将属性映射到数组中位置的哈希值。

positions = {code: 0, name: 1}

然后

target.create company: self.import_source.company, code: row[positions[:code]], name: row[positions[:name]]