diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 99356946f..ecd0f9bec 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -1407,11 +1407,16 @@ class ExercisesController < ApplicationController min_score = exercise_scores.min.present? ? exercise_scores.min : 0.0 max_score = exercise_scores.max.present? ? exercise_scores.max : 0.0 total_score = exercise_scores.sum.present? ? exercise_scores.sum : 0.0 - average_score = @exercise_commit_user_counts > 0 ? (total_score / @exercise_commit_user_counts).round(1) : 0.0 - fail_counts = exercise_scores.count{|a| a < 60.0} - pass_counts = exercise_scores.count{|a| a < 70.0 && a >= 60.0} - good_counts = exercise_scores.count{|a| a < 90.0 && a >= 70.0} - best_counts = exercise_scores.count{|a| a >= 90.0 && a <= 100.0} + average_score = @exercise_commit_user_counts > 0 ? (total_score.round(1) / @exercise_commit_user_counts).round(1) : 0.0 + question_scores = @exercise.question_scores + fail_score = question_scores * 0.6.round(2) + pass_score = question_scores * 0.7.round(2) + good_score = question_scores * 0.9.round(2) + + fail_counts = exercise_scores.count{|a| a < fail_score} + pass_counts = exercise_scores.count{|a| a < pass_score && a >= fail_score} + good_counts = exercise_scores.count{|a| a < 90.0 && a >= pass_score} + best_counts = exercise_scores.count{|a| a >= good_score && a <= question_scores} end @counts_array = { :commit_percent => commit_percent, diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 8469d25b6..0b9963eee 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -37,6 +37,9 @@ class Exercise < ApplicationRecord DEADLINE = 3 #已截止 ENDED = 4 #课堂已结束 + def question_scores + exercise_questions.pluck(:question_score).sum + end def create_exercise_list str = ""