簡體   English   中英

在csv上操縱標題導入rails上的ruby

[英]manipulate headers on csv import ruby on rails

像往常一樣,阿羅哈(Aloha)提供的任何幫助將不勝感激。 我正在導入CSV,並且標題中包含所有大寫和冒號(例如EXT:MAT:PIDTC是一個)。 我將如何處理傳入的標題? 也許我想將上面的示例更改為thisHeader或與我的SpiritTrial模型中的:thisHeader屬性匹配的內容。

class SpiritTrial < ActiveRecord::Base
 def self.import(file)
  CSV.foreach(file.path, headers: true) do |row|
   SpiritTrial.create! row.to_hash
  end
 end
end

CSV.foreach &co。 采用:header_converters 選項 ,該選項應為Proc或Procs數組,以標頭作為參數並為該標頭返回新值。 以您的示例為例,您將執行以下操作:

class SpiritTrial < ActiveRecord::Base
  CSV_HEADER_MAP = {
    "EXT:MAT:PIDTC" => :thisHeader,
    # ...
  }

  CSV_HEADER_CONVERTER = ->(header) { HEADER_MAP.fetch(header, header).to_sym }

  def self.import(file)
    CSV.foreach(file.path, headers: true, header_converters: CSV_HEADER_CONVERTER) do |row|
      SpiritTrial.create! row.to_hash
    end
  end
end

您可以在repl.it上看到一個sans Rails示例: https ://repl.it/FoAj

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM