Skip to content

Commit 0d64a46

Browse files
committed
Refactor Exercise#feedback submission queries
We still have a N+1 query here, but could optimize the code workflow nonetheless.
1 parent 679de7b commit 0d64a46

File tree

2 files changed

+4
-6
lines changed

2 files changed

+4
-6
lines changed

app/controllers/exercises_controller.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,6 @@ def feedback
9999
.user_exercise_feedbacks
100100
.includes(:exercise, user: [:programming_groups])
101101
.paginate(page: params[:page], per_page: per_page_param)
102-
@submissions = @feedbacks.map do |feedback|
103-
feedback.exercise.final_submission(feedback.user.programming_groups.find_by(exercise: @exercise).presence || feedback.user)
104-
end
105102
end
106103

107104
def export_external_check

app/views/exercises/feedback.html.slim

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ h1 = link_to_if(policy(@exercise).show?, @exercise, exercise_path(@exercise))
1414
ul.list-unstyled
1515
- comment_presets = UserExerciseFeedbacksController.new.comment_presets
1616
- time_presets = UserExerciseFeedbacksController.new.time_presets
17-
- @feedbacks.each_with_index do |feedback, index|
17+
- @feedbacks.each do |feedback|
18+
- contributor = feedback.user.programming_groups.find_by(exercise: @exercise).presence || feedback.user
1819
li.card.mt-2
1920
.card-header#heading role='tab'
2021
.clearfix.feedback-header
@@ -31,7 +32,7 @@ h1 = link_to_if(policy(@exercise).show?, @exercise, exercise_path(@exercise))
3132
- if policy(@exercise).detailed_statistics?
3233
.card-footer
3334
.clearfix.feedback-header
34-
span.points.flex-grow-1 = "#{t('exercises.statistics.score')}: #{@submissions[index].score}"
35-
span.working_time.float-end = "#{t('exercises.statistics.worktime')}: #{@exercise.average_working_time_for(feedback.user) || 0}"
35+
span.points.flex-grow-1 = "#{t('exercises.statistics.score')}: #{@exercise.maximum_score(contributor)}"
36+
span.working_time.float-end = "#{t('exercises.statistics.worktime')}: #{@exercise.average_working_time_for(contributor) || 0}"
3637

3738
= render('shared/pagination', collection: @feedbacks)

0 commit comments

Comments
 (0)