2012-01-24 25 views
0

我想數據導入到軌(3.1)和我創造了這個rake任務時解析CSV文件(Excel的Mac上生成的)無法將數據導入Rails的,奇怪的環流式

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文件的第一行被導入。它不會遍歷文件中除第一行之外的每一行。誰能告訴我爲什麼?

回答

1

當解析任何形式使用Ruby的文本文件,一定要檢查編碼和/或行結束,以確保它是紅寶石喜歡的格式。

在這種情況下,Ruby不喜歡Mac OS X行結束格式,但喜歡Unix。

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 
+0

感謝您的回答,我的問題實際上是行結尾(Mac上的Excel不以Ruby的方式對其進行編碼) –