From dfc7ed119dc22ae41fac5c79148807a2a4d466d4 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Tue, 7 May 2019 10:10:35 +0800 Subject: [PATCH] 1 --- app/models/exercise.rb | 1 + ...6070751_migrate_exercise_user_questions.rb | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 db/migrate/20190506070751_migrate_exercise_user_questions.rb diff --git a/app/models/exercise.rb b/app/models/exercise.rb index f0343311..5b81b1b3 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -30,6 +30,7 @@ class Exercise < ActiveRecord::Base end def create_user_question_list exercise_user_id + self.exercise_user_questions.where(exercise_user_id: exercise_user_id).destroy_all self.exercise_questions.where("question_type != 5").each do |question| ExerciseUserQuestion.create(exercise_id: self.id, exercise_user_id: exercise_user_id, exercise_question_id: question.id) end diff --git a/db/migrate/20190506070751_migrate_exercise_user_questions.rb b/db/migrate/20190506070751_migrate_exercise_user_questions.rb new file mode 100644 index 00000000..3417cf67 --- /dev/null +++ b/db/migrate/20190506070751_migrate_exercise_user_questions.rb @@ -0,0 +1,30 @@ +class MigrateExerciseUserQuestions < ActiveRecord::Migration + def up + exercise = Exercise.where(:id => 1031).first + if exercise.present? + exercise.exercise_users.each do |exercise_user| + # 分配的实训题数量多于6个的(撤销发布过的学生会有12个题)则删除前六个题 + if exercise_user.exercise_user_questions.where(:exercise_id => exercise.id).count > 6 + exercise_user.exercise_user_questions[0..5].each do |question| + question.destroy + end + end + + # 分数超过一百分的需要重新计算得分 + if exercise_user.objective_score > 100.0 + score = 0 + ExerciseUserQuestion.where(exercise_user_id: exercise_user.id, exercise_id: exercise.id).each do |question| + question.exercise_shixun_challenges.each do |exercise_cha| + score += exercise_cha.exercise_shixun_answers.where(user_id => exercise_user.user_id).try(:score).to_f + end + end + + exercise_user.update_attributes(score: score, objective_score: score) + end + end + end + end + + def down + end +end