說我有下面的類:使用Ruby CSV標題轉換器
class Buyer < ActiveRecord::Base
attr_accesible :first_name, :last_name
,並在CSV文件中的以下內容:
First Name,Last Name
John,Doe
Jane,Doe
我想了CSV的內容保存到數據庫中。我曾經在一個耙文件中的以下內容:
namespace :migration do
desc "Migrate CSV data"
task :import, [:model, :file_path] => :environment do |t, args|
require 'csv'
model = args.model.constantize
path = args.file_path
CSV.foreach(path, :headers => true,
:converters => :all,
:header_converters => lambda { |h| h.downcase.gsub(' ', '_') }
) do |row|
model.create!(row.to_hash)
end
end
末
我正在一個undefined method 'downcase' for nil:NilClass
。如果我排除標題轉換器,那麼我得到unknown attribute 'First Name'
。將標題從First Name
轉換爲first_name
的正確語法是什麼?
完全給出錯誤* undefined method'downcase'*,這有助於我們瞭解該方法被調用的對象。 –
@ArupRakshit編輯了這個問題,它在'nil:NilClass'上。 – jcm
只需在其中添加一個條目':return_headers => true'。我沒有測試,但希望它能起作用。如果有幫助,請告訴我,我會向你解釋發生的一切。 –