[英]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.