diff --git a/app/models/ta.rb b/app/models/ta.rb index 8d7869fb4b..cd657d3ff2 100644 --- a/app/models/ta.rb +++ b/app/models/ta.rb @@ -25,19 +25,21 @@ def get_groupings_by_assignment(assignment) end def marked_result_ids_for(assignment) + @total_results ||= {} + @total_results[assignment.id] ||= assignment.current_results + .joins(grouping: :tas) + .where('roles.id': self.id) @marked_result_ids ||= {} - @marked_result_ids[assignment.id] ||= assignment.current_results - .joins(grouping: :tas) - .where(marking_state: Result::MARKING_STATES[:complete], - 'roles.id': self.id) - .ids + @marked_result_ids[assignment.id] ||= @total_results[assignment.id] + .where(marking_state: Result::MARKING_STATES[:complete]).ids + [@total_results, @marked_result_ids] end # An array of all the grades for an assignment for this TA. # If TAs are assigned to grade criteria, returns just the subtotal # for the criteria the TA was assigned. def percentage_grades_array(assignment) - result_ids = marked_result_ids_for(assignment) + result_ids = marked_result_ids_for(assignment)[1][2] if assignment.assign_graders_to_criteria criterion_ids = self.criterion_ta_associations.where(assessment_id: assignment.id).pluck(:criterion_id) @@ -68,11 +70,11 @@ def grade_distribution_array(assignment, intervals = 20) end def get_num_marked_from_cache(assignment) - marked_result_ids_for(assignment).size + marked_result_ids_for(assignment)[1][2].size end def get_num_assigned_from_cache(assignment) - assignment.current_results.size + marked_result_ids_for(assignment)[0][2].size end private