数据旁边的CSV标头 - Rails导入

时间:2015-01-08 19:50:00

标签: ruby-on-rails ruby csv import

所以,我正在尝试使用以下格式的RoR导入CSV文件:

header,data,header,data,header,data

一个例子是:

name,peter,age,12,birthplace,london
name,john,age,30,birthplace,new york

导入文件后,如何分配与数据库匹配的标头。订单可能每次都不同,某些字段可能在CSV中,而其他字段可能不在。我将如何在我的模型中处理这个问题?

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

all_attributes = []
CSV.foreach('path/to/file') do |row|
  attributes = {}
  row.each_with_index do |column, i|
    next if i % 2 != 0 # skip every other column
    attributes[column.to_sym] = row[i+1]
  end
  all_attributes << attributes
end

此代码依赖于标题在值之前始终为1列的事实。