From 7aeca0078f21d8ddd2e95bf673b9e3d0493365f6 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Wed, 30 Aug 2023 18:46:09 +0200 Subject: [PATCH] Reduce N+1 queries for ExercisesController#feedback Fixes CODEOCEAN-TF --- app/controllers/exercises_controller.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 61a601c6..dd7642f2 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -90,9 +90,12 @@ class ExercisesController < ApplicationController def feedback authorize! - @feedbacks = @exercise.user_exercise_feedbacks.paginate(page: params[:page], per_page: per_page_param) + @feedbacks = @exercise + .user_exercise_feedbacks + .includes(:exercise, user: [:programming_groups]) + .paginate(page: params[:page], per_page: per_page_param) @submissions = @feedbacks.map do |feedback| - feedback.exercise.final_submission(feedback.user.programming_groups.where(exercise: @exercise).presence || feedback.user) + feedback.exercise.final_submission(feedback.user.programming_groups.select {|pg| pg.exercise = @exercise }.presence || feedback.user) end end