use activerecord-import gem to speed up csv uploads

pull/1/head
rebuilt 4 years ago committed by Alex Basson
parent 7f0a5f9e8f
commit d6fddb9f7b

@ -1,7 +1,9 @@
require 'csv' require 'csv'
class SurveyResponsesDataLoader class SurveyResponsesDataLoader
@@survey_item_responses = []
def self.load_data(filepath:) def self.load_data(filepath:)
@@survey_item_responses = []
csv_file = File.read(filepath) csv_file = File.read(filepath)
parsed_csv_file = CSV.parse(csv_file, headers: true) parsed_csv_file = CSV.parse(csv_file, headers: true)
@ -13,6 +15,8 @@ class SurveyResponsesDataLoader
parsed_csv_file.each do |row| parsed_csv_file.each do |row|
process_row row: row, survey_items: survey_items process_row row: row, survey_items: survey_items
end end
SurveyItemResponse.import @@survey_item_responses
end end
private private
@ -34,7 +38,7 @@ class SurveyResponsesDataLoader
likert_score = row[survey_item.survey_item_id] likert_score = row[survey_item.survey_item_id]
next if likert_score.nil? next if likert_score.nil?
SurveyItemResponse.create( @@survey_item_responses << SurveyItemResponse.new(
response_id: response_id, response_id: response_id,
academic_year: academic_year, academic_year: academic_year,
school: school, school: school,
@ -65,4 +69,4 @@ class SurveyResponsesDataLoader
end end
AcademicYear.find_by_range("#{ay_range_start}-#{ay_range_end.to_s[2, 3]}") AcademicYear.find_by_range("#{ay_range_start}-#{ay_range_end.to_s[2, 3]}")
end end
end end

Loading…
Cancel
Save