迁移文件

dev_local
cxt 6 years ago
parent a44ad345d2
commit bd28c8b1a0

@ -0,0 +1,78 @@
class MigrateExerciseShixunAnswerScore < ActiveRecord::Migration
def up
# exercises = Exercise.where(id: [1057, 1058])
# exercises.each do |exercise|
# exercise.exercise_users.where(commit_status: 1).each do |ex_user|
# ex_user.exercise_user_questions.each do |ex_user_question|
# score_change = false
# answer_count = ex_user.user.exercise_shixun_answers.where(exercise_question_id: ex_user_question.exercise_question_id).count
# if answer_count > 1
# score_change = true
# first_answer = ex_user.user.exercise_shixun_answers.where(exercise_question_id: ex_user_question.exercise_question_id).reorder("score desc").first
# ex_user.user.exercise_shixun_answers.where(exercise_question_id: ex_user_question.exercise_question_id).where("id != #{first_answer.id}").delete_all
# end
#
# if score_change
# score = ExerciseShixunAnswer.where(user_id: ex_user.user_id, exercise_question_id: ex_user.exercise_user_questions.pluck(:exercise_question_id)).pluck(:score).sum
# ex_user.update_attributes(score: score, objective_score: score)
# end
# end
# end
# end
# exercise_users = ExerciseUser.where(exercise_id: 1057, user_id: [54486, 54563, 54517, 54609, 54785])
# exercise_users.each do |ex_user|
# score = ExerciseShixunAnswer.where(user_id: ex_user.user_id, exercise_question_id: ex_user.exercise_user_questions.pluck(:exercise_question_id)).pluck(:score).sum
# ex_user.update_attributes(score: score, objective_score: score)
# end
#
# exercise_users = ExerciseUser.where(exercise_id: 1058, user_id: 54957)
# exercise_users.each do |ex_user|
# score = ExerciseShixunAnswer.where(user_id: ex_user.user_id, exercise_question_id: ex_user.exercise_user_questions.pluck(:exercise_question_id)).pluck(:score).sum
# ex_user.update_attributes(score: score, objective_score: score)
# end
exercises = Exercise.where(id: [1057, 1058])
exercises.each do |exercise|
exercise.exercise_users.where(commit_status: 1).each do |ex_user|
ex_user.exercise_user_questions.each do |ex_user_question|
question = ex_user_question.exercise_question
question.exercise_shixun_challenges.each do |exercise_cha|
game = Game.where(:user_id => ex_user.user_id, :challenge_id => exercise_cha.challenge_id).first
if game.present?
exercise_cha_score = 0
if game.final_score >= 0
exercise_cha_score = game.real_score exercise_cha.question_score
end
answer = exercise_cha.exercise_shixun_answers.where(:user_id => ex_user.user_id).first
if exercise_cha_score.to_i != answer.try(:score).to_i
puts("###########{exercise_cha_score}--#{answer.try(:score).to_f}--#{ex_user.id}--#{ex_user.user_id}--#{game.id}")
end
end
end
end
end
end
Exercise.where("id not in (1057, 1058)").each do |exercise|
ExerciseShixunChallenge.joins(:exercise_question).where("exercise_id = #{exercise.id}").each do |ex_challenge|
exercise.exercise_users.where(commit_status: 1).find_each do |ex_user|
first = ex_challenge.exercise_shixun_answers.where(user_id: ex_user.user_id).first
if first.present?
puts("#######{ex_challenge.exercise_shixun_answers.where(user_id: ex_user.user_id).where("id != #{first.id}").pluck(:id)}")
ex_challenge.exercise_shixun_answers.where(user_id: ex_user.user_id).where("id != #{first.id}").delete_all
end
end
end
end
add_index :exercise_shixun_answers, [:user_id, :exercise_shixun_challenge_id], unique: true,
name: "index_user_id_and_exercise_shixun_challenge_id"
end
def down
end
end
Loading…
Cancel
Save