Use public score_for_measure method instead of private 'for_measure' scope

pull/1/head
Liam Morley 4 years ago
parent f3c632ea2a
commit f5e5abc27e

@ -6,8 +6,6 @@ class SurveyItemResponse < ActiveRecord::Base
belongs_to :school belongs_to :school
belongs_to :survey_item belongs_to :survey_item
scope :for_measure, ->(measure) { joins(:survey_item).where('survey_items.measure_id': measure.id) }
def self.score_for_subcategory(subcategory:, school:, academic_year:) def self.score_for_subcategory(subcategory:, school:, academic_year:)
measures = subcategory.measures.select { |measure| sufficient_data?(measure: measure, school: school, academic_year: academic_year) } measures = subcategory.measures.select { |measure| sufficient_data?(measure: measure, school: school, academic_year: academic_year) }
@ -26,6 +24,7 @@ class SurveyItemResponse < ActiveRecord::Base
private private
scope :for_measure, ->(measure) { joins(:survey_item).where('survey_items.measure_id': measure.id) }
scope :for_measures, ->(measures) { joins(:survey_item).where('survey_items.measure_id': measures.map(&:id)) } scope :for_measures, ->(measures) { joins(:survey_item).where('survey_items.measure_id': measures.map(&:id)) }
scope :teacher_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 't-%'") } scope :teacher_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 't-%'") }
scope :student_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 's-%'") } scope :student_responses_for_measure, ->(measure) { for_measure(measure).where("survey_items.survey_item_id LIKE 's-%'") }

@ -14,10 +14,7 @@ class MeasurePresenter
end end
def gauge_presenter def gauge_presenter
average_score = SurveyItemResponse.for_measure(@measure) average_score = SurveyItemResponse.score_for_measure(measure: @measure, academic_year: @academic_year, school: @school)
.where(academic_year: @academic_year, school: @school)
.average(:likert_score)
GaugePresenter.new(scale: scale, score: average_score) GaugePresenter.new(scale: scale, score: average_score)
end end

Loading…
Cancel
Save