我試圖導入CSV文件導入紅寶石使用許多腳本和方法,似乎沒有任何工作軌道不導入數據。我一直希望從埃裏克on Rails的博客的代碼將有助於讓我的工作做好。Ruby on Rails的CSV導入rake任務自動失敗和
我把這個腳本放到LIB /任務/ import.rake:
desc "Imports a CSV file into an ActiveRecord table"
task :csv_model_import, [:filename, :model, :needs] => [:environment] do |task,args|
lines = File.new(args[:filename]).readlines
header = lines.shift.strip
keys = header.split(',')
lines.each do |line|
values = line.strip.split(',')
attributes = Hash[keys.zip values]
Module.const_get(args[:model]).create(attributes)
end
end
我創建的軌道控制檯
rails generate model SomeModel
然後在鐵軌控制檯運行這個模型
rake csv_model_import[somefile.csv,SomeModel]
運行之後,光標剛剛返回控制檯。它默默地失敗。查看導軌程序的數據庫文件時,在導入 之後該表爲空。它已經提交導入數據。
我嘗試別的東西爲好。我試着在運行rake import命令之前首先創建一個具有定義的字段和類型的模型。這也以同樣的方式失敗了。
我是Ruby on Rails的新手,我是。我花了2天的時間嘗試將CSV文件導入到Ruby on Rails中,並且非常感謝您的幫助。請讓我知道如何繼續,非常感謝這麼多人。
WOW,感謝這麼多它的工作的幫助。對於任何試圖使用此方法的人: – akaras222
注意:首先在命令提示符下生成模型:rails g model somemodel name:string age:string food:string(注意somemodel中的小寫字母s)然後複製代碼塊「full gist」進入lib/task並保存爲import.rake,然後返回到命令提示符中輸入:rake csv_model_import [directory/file.csv,Somemodel](請注意這次Somemodel中的大寫S) – akaras222
謝謝。請將答案標記爲已接受,以便對其他人有用 –