From f0ca3b6e826efb1a4b3f34806a92bd2236d45cf7 Mon Sep 17 00:00:00 2001 From: Hauke Klement Date: Mon, 23 Feb 2015 17:19:09 +0100 Subject: [PATCH] improved readability --- app/models/exercise.rb | 5 ++++- app/views/exercises/statistics.html.slim | 2 +- app/views/sessions/destroy_through_lti.html.slim | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 7fa73bd7..357d6710 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -24,7 +24,10 @@ class Exercise < ActiveRecord::Base end def average_score - ActiveRecord::Base.connection.execute("SELECT AVG(score) AS average_score FROM (SELECT MAX(score) AS score FROM submissions WHERE cause = 'submit' AND exercise_id = '#{id}' GROUP BY user_id) AS maximum_scores")[0]['average_score'].to_f.round(2) + if submissions.exists?(cause: 'submit') + maximum_scores_query = submissions.select('MAX(score) AS maximum_score').where(cause: 'submit').group(:user_id).to_sql + self.class.connection.execute("SELECT AVG(maximum_score) AS average_score FROM (#{maximum_scores_query}) AS maximum_scores").first['average_score'].to_f + end end def duplicate(attributes = {}) diff --git a/app/views/exercises/statistics.html.slim b/app/views/exercises/statistics.html.slim index 5e6ed317..77ab091d 100644 --- a/app/views/exercises/statistics.html.slim +++ b/app/views/exercises/statistics.html.slim @@ -5,5 +5,5 @@ h1 = @exercise = row(label: ".#{scope}_submissions") do = "#{@exercise.submissions.send(scope).count} (#{t('.users', count: @exercise.submissions.send(scope).distinct.count(:user_id, :user_type))})" = row(label: '.average_score') do - p == @exercise.average_score ? t('shared.out_of', maximum_value: @exercise.maximum_score, value: @exercise.average_score) : empty + p == @exercise.average_score ? t('shared.out_of', maximum_value: @exercise.maximum_score, value: @exercise.average_score.round(2)) : empty p = progress_bar(@exercise.average_percentage) diff --git a/app/views/sessions/destroy_through_lti.html.slim b/app/views/sessions/destroy_through_lti.html.slim index bb60e666..623badba 100644 --- a/app/views/sessions/destroy_through_lti.html.slim +++ b/app/views/sessions/destroy_through_lti.html.slim @@ -11,5 +11,5 @@ h2 = t('shared.statistics') p = progress_bar(@submission.percentage) = row(label: '.final_submissions', value: @submission.exercise.submissions.final.distinct.count(:user_id, :user_type) - 1) = row(label: '.average_score') do - p == t('shared.out_of', maximum_value: @submission.exercise.maximum_score, value: @submission.exercise.average_score) + p == t('shared.out_of', maximum_value: @submission.exercise.maximum_score, value: @submission.exercise.average_score.round(2)) p = progress_bar(@submission.exercise.average_percentage)