在CSV上载期间运行方法



我下面有一个简单的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]具有值的描述。

最新更新