@ -124,16 +124,11 @@ class Values
@school || = School . find_by_dese_id ( dese_id )
end
# TODO: pass survey_items as an argument so we're not looking it up for every row. The set of survey items only needs to be determined once from the file headers.
def survey_items
@survey_items || = SurveyItem . where ( survey_item_id : get_survey_item_ids_from_headers ( headers : ) )
end
def get_survey_item_ids_from_headers ( headers : )
CSV . parse ( headers , headers : true ) . headers
. filter ( & :present? )
. filter { | header | header . start_with? 't-' or header . start_with? 's-' }
end
def grade
@grade || = begin
raw_grade = ( row [ 'grade' ] || row [ 'Grade' ] || row [ 'What grade are you in?' ] ) . to_i
@ -148,6 +143,14 @@ class Values
gender_code = 99 if gender_code . zero?
genders [ gender_code ]
end
private
def get_survey_item_ids_from_headers ( headers : )
CSV . parse ( headers , headers : true ) . headers
. filter ( & :present? )
. filter { | header | header . start_with? 't-' or header . start_with? 's-' }
end
end
module StringMonkeyPatches