Ошибка приведения данных при чтении из файла в Ruby

Я пытаюсь импортировать данные в rails (3.1), и я создал эту задачу rake для анализа текстового файла с разделителями табуляции (сгенерированного Excel на Mac), файл имеет стандартные окончания строки Mac OS X.

desc "Import users." 
  task :import_users => :environment do
    File.open("users.txt", "r", '\r').each do |line|
      id, name, age, email = line.strip.split('/t')
      u = User.new(:id => id, :name => name, :age => age, :email => email)
      u.save
    end
  end

Однако, когда я пытаюсь запустить эту задачу rake, я получаю следующую ошибку:

rake aborted!
can't convert String into Integer

Я предполагаю, что Ruby не нравится преобразовывать заголовок Age в числовую переменную age в моем классе User. Есть ли способ, которым я могу (а) пропустить строку заголовка в файле ИЛИ (б) сделать это на лету в Ruby?

Примечание. Это одна из многих попыток чтения некоторых данных в Ruby. Всякий раз, когда я пытался прочитать данные раньше, я никогда не получал эту ошибку. Строковое значение всегда приводилось к 0.0.


person Andrew Lauer Barinov    schedule 24.01.2012    source источник


Ответы (1)


Самое простое решение, которое пришло на ум:

u = User.new(:id => id, :name => name, :age => Integer(age), :email => email)

Конечно, у вас все равно будет ошибка в первой строке файла, если вы получили там свои заголовки.

person Vestel    schedule 24.01.2012