@ -19,16 +19,22 @@ class SurveyItemResponse < ActiveRecord::Base
scope :averages_for_grade , lambda { | survey_items , school , academic_year , grade |
scope :averages_for_grade , lambda { | survey_items , school , academic_year , grade |
SurveyItemResponse . where ( survey_item : survey_items , school : ,
SurveyItemResponse . where ( survey_item : survey_items , school : ,
academic_year : , grade : ) . group ( :survey_item ) . average( :likert_score )
academic_year : , grade : ) . group ( :survey_item ) . having( " count(*) >= 10 " ) . average( :likert_score )
}
}
scope :averages_for_gender , lambda { | survey_items , school , academic_year , gender |
scope :averages_for_gender , lambda { | survey_items , school , academic_year , gender |
SurveyItemResponse . where ( survey_item : survey_items , school : ,
SurveyItemResponse . where ( survey_item : survey_items , school : ,
academic_year : , gender : ). group ( :survey_item ) . average ( :likert_score )
academic_year : , gender : , grade : school . grades ( academic_year : ) ). group ( :survey_item ) . having ( " count(*) >= 10 " ) . average ( :likert_score )
}
}
scope :averages_for_income , lambda { | survey_items , school , academic_year , income |
scope :averages_for_income , lambda { | survey_items , school , academic_year , income |
SurveyItemResponse . where ( survey_item : survey_items , school : ,
SurveyItemResponse . where ( survey_item : survey_items , school : ,
academic_year : , income : ) . group ( :survey_item ) . average ( :likert_score )
academic_year : , income : , grade : school . grades ( academic_year : ) ) . group ( :survey_item ) . having ( " count(*) >= 10 " ) . average ( :likert_score )
}
scope :averages_for_race , lambda { | school , academic_year , race |
SurveyItemResponse . joins ( " JOIN student_races on survey_item_responses.student_id = student_races.student_id JOIN students on students.id = student_races.student_id " ) . where (
school : , academic_year : , grade : school . grades ( academic_year : )
) . where ( " student_races.race_id " : race . id ) . group ( :survey_item_id ) . having ( " count(*) >= 10 " ) . average ( :likert_score )
}
}
end
end