[英]Custom headers for rails 4 CSV Import
我在我的rails應用程序中添加了導入功能。我希望能夠導入用戶,但是我的用戶表列是簡寫形式,即。 f_name =冷杉名稱l_name =姓氏,以此類推。.我想創建一個導入工具,用戶可以從應用程序下載並填寫該導入工具,以節省最初用戶導入的時間(這也將用於其他模型)。 。)有什么方法可以設置導入方法以讀取自定義標頭? 我試圖將其搜索出來,但沒有得到太多回報。 也許這就是我對這個問題的措辭?
現在,導入功能可以正常工作了,但是誰真的想要一個看上去很討厭的Excel工作表。
我的導入控制器操作:
def import
User.import(params[:file])
redirect_to users_path, notice: 'Users Added Successfully'
end
我的導入類功能:
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
User.create! row.to_hash
end
end
您可以創建一個方法來自己替換標題。 將文件讀入內存,更改第一行。 然后運行CSV.foreach
。 我敢肯定有一種更好的方式來縮進這個...
def self.headers
{"last name" => "l_name",
"first name" => "f_name"}
end
def self.import(file)
CSV.parse(self.parse_headers(file), headers: true) do |row|
User.create! row.to_hash
end
end
def self.parse_headers (file)
File.open(file) { |f|
first_line = f.readline
self.headers.each { |k,v| first_line[k] &&= v }
first_line + f.read }
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.