Скажем, у меня есть следующий класс:Использование преобразователей заголовка рубин 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'. Я не тестировал, но надеюсь, что это сработает. Если это поможет, сообщите мне, я объясню вам все, что произошло. –