我下面有一个简单的CSV上传器,它逐行进行并创建一个新记录(事件)。我还使用了unidecoder gem,并希望在CSV上传器创建的每个记录中的字段(描述字段)上调用to_ascii
方法。听起来应该很简单,但我不熟悉在CSV文件中迭代。
上传者:
def self.import(file)
CSV.foreach(file.path, headers: true, encoding: "windows-1252:utf-8") do |row|
Event.create! row.to_hash
end
end
正确的实现方式:
def self.import(file)
CSV.foreach(file.path, headers: true, encoding: "windows-1252:utf-8") do |row|
description = row[2]
row[2] = description.to_ascii
Event.create! row.to_hash
end
end
谢谢!
试试这个:
CSV.foreach(file.path, headers: true, encoding: "windows-1252:utf-8") do |row|
unless row[1].blank?
description = row[1] # Change 1 for the correct column
row[1] = description.to_ascii
end
Event.create! row
end
如果描述不是空白(空),提取并更新值(描述),然后保存。
row
是一个由逗号分隔的数组值,例如像name, description, address
这样的CSV文件,row[1]
具有值的描述。