我正在通过rake任务将17个csv文件导入我的应用程序。其他文件将导入正常而不创建额外的行,但由于某种原因,此文件在我的数据库中创建了大约60个空行。我正在尝试导入的信息很好,并且它应该以适当的方式与它相关联。因此,如果您要使用该应用程序,一切都能正常运行,但它会弄乱我的桌子。
例如,我正在向表中导入2行,并且在创建这两行之后,它后面跟着58行空行。有没有人有任何关于如何使用条件语句来防止这种情况发生的建议,请具体说明我还是比较新的。感谢
这是我的代码:
require 'csv'
namespace :import_mat_lists_csv do
task :create_mat_lists => :environment do
puts "Import Material List"
csv_text = File.read('c:/rails/thumb/costrecovery/lib/csv_import/mat_lists.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each_with_index do |row,index|
row = row.to_hash.with_indifferent_access
MatList.create!(row.to_hash.symbolize_keys)
matlist = MatList.last
if @report_incident_hash.key?(matlist.report_nr)
matlist.incident_id = "#{@report_incident_hash[matlist.report_nr]}"
end
#matlist.timesheet_id = @timesheet_id_array[index]
matlist.save
end
end
end
答案 0 :(得分:1)
有几种方法可以解决这个问题,但也许最简单的方法是添加:
unless row.join.blank?
您的代码会显示为:
csv.each_with_index do |row,index|
unless row.join.blank?
row = row.to_hash.with_indifferent_access
MatList.create!(row.to_hash.symbolize_keys)
matlist = MatList.last
if @report_incident_hash.key?(matlist.report_nr)
matlist.incident_id = "#{@report_incident_hash[matlist.report_nr]}"
end
#matlist.timesheet_id = @timesheet_id_array[index]
matlist.save
end
end