Проблемы с импортом данных в Rails, странные циклы - PullRequest
0 голосов
/ 24 января 2012

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

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

Однако, когда я запускаю задачу rake,импортируется только первая строка файла CSV.Он не перебирает все строки в файле, кроме первой.Кто-нибудь может сказать мне, почему?

Ответы [ 2 ]

1 голос
/ 24 января 2012

При разборе любого текстового файла с использованием ruby ​​обязательно проверьте кодировку и / или окончания строк, чтобы убедиться, что этот формат нравится Ruby.

В этом случае Ruby не понравилась строка Mac OS Xформат окончания, но понравился Unix.

1 голос
/ 24 января 2012

Не уверен, но я думаю, что здесь происходит то, что каждый представляет каждый файл, а не каждую строку.И поскольку есть только один файл, он может работать не так, как ожидалось.Я бы попробовал парсер CSV вместо:

CSV.foreach("users.csv") do |line|
      id, name, age, email = line
      u = User.new(:id => id, :name => name, :age => age, :email => email)
      u.save
end
...