diff --git a/app/models/student_response_rate.rb b/app/models/student_response_rate.rb index b8d38aca..307952e6 100644 --- a/app/models/student_response_rate.rb +++ b/app/models/student_response_rate.rb @@ -6,9 +6,7 @@ class StudentResponseRate < ResponseRate private def survey_item_count - @student_survey_item_count ||= @subcategory.measures.map do |measure| - measure.student_survey_items.count - end.sum + @student_survey_item_count = SurveyItem.student_survey_items_for_measures(@subcategory.measures).count end def response_count diff --git a/app/models/survey_item.rb b/app/models/survey_item.rb index bada2753..6e7a585e 100644 --- a/app/models/survey_item.rb +++ b/app/models/survey_item.rb @@ -1,4 +1,11 @@ class SurveyItem < ActiveRecord::Base belongs_to :measure has_many :survey_item_responses + + scope :student_survey_items_for_measures, lambda { |measures| + joins(:measure).where(measure: measures).where("survey_item_id LIKE 's-%'") + } + scope :teacher_survey_items_for_measures, lambda { |measures| + joins(:measure).where(measure: measures).where("survey_item_id LIKE 't-%'") + } end diff --git a/app/models/teacher_response_rate.rb b/app/models/teacher_response_rate.rb index 9cce3a29..021f5141 100644 --- a/app/models/teacher_response_rate.rb +++ b/app/models/teacher_response_rate.rb @@ -10,9 +10,7 @@ class TeacherResponseRate < ResponseRate end def survey_item_count - @teacher_survey_item_count ||= @subcategory.measures.map do |measure| - measure.teacher_survey_items.count - end.sum + @teacher_survey_item_count ||= SurveyItem.teacher_survey_items_for_measures(@subcategory.measures).count end def response_count