无法将数据导入Rails,奇怪的循环

时间:2012-01-24 09:14:29

标签: ruby-on-rails ruby-on-rails-3.1 rake

我正在尝试将数据导入rails(3.1)并创建此rake任务来解析CSV文件(由Mac上的Excel生成)

 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 个答案:

答案 0 :(得分:1)

不确定,但我认为这里发生的是每个文件代表每个文件而不是每一行。由于只有一个文件,这可能无法正常工作。我会尝试使用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

答案 1 :(得分:1)

使用ruby解析任何类型的文本文件时,请务必检查编码和/或行结尾,以确保它是Ruby喜欢的格式。

在这种情况下,Ruby不喜欢Mac OS X行结束格式,但喜欢Unix版本。