From 64bc58436b02d9bb1c0e94da01aea16220716e43 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Wed, 4 Dec 2019 11:46:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=95=E5=8D=B7=E6=88=90=E7=BB=A9=E8=BF=81?= =?UTF-8?q?=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0_migrate_exercise_single_question_score.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 db/migrate/20191204030230_migrate_exercise_single_question_score.rb diff --git a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb new file mode 100644 index 000000000..04f438daa --- /dev/null +++ b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb @@ -0,0 +1,18 @@ +class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2] + def change + exercise_answers = ExerciseAnswer.joins(:exercise_question).where("exercise_answers.created_at > '2019-11-01 00:00:00'").where(score: -1, exercise_questions: {question_type: [0, 2]}) + exercise_answers.includes(:exercise_choice, exercise_question: :exercise_standard_answers).find_each do |answer| + + question = answer.exercise_question + exercise_user = ExerciseUser.find_by(exercise_id: question.exercise_id, user_id: answer.user_id) + user_choice_position = answer.exercise_choice&.choice_position + + if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) && exercise_user + answer.update!(score: question.question_score) + score = exercise_user.score + question.question_score + objective_score = exercise_user.objective_score + question.question_score + exercise_user.update!(score: score, objective_score: objective_score) + end + end + end +end