所以,我正在尝试使用以下格式的RoR导入CSV文件:
header,data,header,data,header,data
一个例子是:
name,peter,age,12,birthplace,london
name,john,age,30,birthplace,new york
导入文件后,如何分配与数据库匹配的标头。订单可能每次都不同,某些字段可能在CSV中,而其他字段可能不在。我将如何在我的模型中处理这个问题?
答案 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列的事实。