我正在尝试以最简单的方式将一些值读入 .each 代码块中的数组,但我遇到了问题。我正在通过我构建的 rake 文件导入 csv 文件,该文件将使用新行更新表,从而创建新的 id。我正在尝试获取创建的每个 id 并将它们保存到一个数组中。而且我希望能够在另一个 rake 任务中访问存储在该数组中的值。
以下代码用于将导入 csv 文件的 rake 文件,并且我希望在数组中捕获其新生成的 id。它目前做了它应该做的事情,但你一次只能导入一个新行。
Import_incidents_csv.rake
require 'csv'
namespace :import_incidents_csv do
task :create_incidents => :environment do
puts "Import Incidents"
csv_text = File.read('c:/rails/thumb/costrecovery_csv/lib/csv_import/incidents.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
row = row.to_hash.with_indifferent_access
Incident.create!(row.to_hash.symbolize_keys)
end
@last_incident_id = Incident.last.id
end
end
这是另一个 rake 文件,它导入另一个 csv 文件,我需要将值存储在分配给的数组中。再说一次,如果你只导入一个新行,目前它工作得很好,但是如果你导入多行,那么一切都会变得有点混乱。
Import_timesheets_csv.rake
require 'csv'
namespace :import_timesheets_csv do
task :create_timesheets => :environment do
puts "Import Timesheets"
csv_text = File.read('c:/rails/thumb/costrecovery_csv/lib/csv_import/timesheets.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
row = row.to_hash.with_indifferent_access
Timesheet.create!(row.to_hash.symbolize_keys)
end
timesheet = Timesheet.last
timesheet.incident_id = @last_incident_id
timesheet.save
@last_timesheet_id = Timesheet.last.id
end
end
我读了这个处理数组的资源http://www.tutorialspoint.com/ruby/ruby_arrays.htm,它看起来很混乱。这是我对 Import_incidents_csv.rake 文件在将值读入数组时的最佳猜测。最后我有puts,所以我可以验证整数是否正确存储在数组中。一旦我让一切正常,我会删除它。
require 'csv'
def inc_id
@inc_id = Incident.last.id
end
namespace :import_incidents_csv do
task :create_incidents => :environment do
puts "Import Incidents"
csv_text = File.read('c:/rails/thumb/costrecovery_csv/lib/csv_import/incidents.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
row = row.to_hash.with_indifferent_access
Incident.create!(row.to_hash.symbolize_keys)
Incident.last.id = @inc_id
id_array = Array.new(@inc_id)
end
puts "#{id_array}"
end
end