试卷多空题的迁移

dev_forum
SylorHuang 5 years ago
parent df27e6f895
commit b21966c357

@ -223,7 +223,6 @@ class ExerciseQuestionsController < ApplicationController
end end
end end
#试卷未发布时,当标准答案存在时,可修改标准答案内容,可增删标准答案,否则只能修改标准答案,不能增删标准答案 #试卷未发布时,当标准答案存在时,可修改标准答案内容,可增删标准答案,否则只能修改标准答案,不能增删标准答案
st_count = 0
@exercise_answers_array = @exercise_question.exercise_standard_answers #问卷的全部标准答案 @exercise_answers_array = @exercise_question.exercise_standard_answers #问卷的全部标准答案
if standard_answer.present? if standard_answer.present?
if @exercise_question.question_type <= 2 #选择题/判断题,标准答案为一个或多个 if @exercise_question.question_type <= 2 #选择题/判断题,标准答案为一个或多个
@ -232,7 +231,6 @@ class ExerciseQuestionsController < ApplicationController
old_left_standard_choices = exercise_standard_choices - common_standard_choices # 以前的差集共同的,剩余的表示需要删掉 old_left_standard_choices = exercise_standard_choices - common_standard_choices # 以前的差集共同的,剩余的表示需要删掉
new_left_standard_choices = standard_answer - common_standard_choices # 传入的标准答案差集共同的,剩余的表示需要新建 new_left_standard_choices = standard_answer - common_standard_choices # 传入的标准答案差集共同的,剩余的表示需要新建
if old_left_standard_choices.count > 0 if old_left_standard_choices.count > 0
st_count += 1
@exercise_answers_array.standard_by_ids(old_left_standard_choices).destroy_all @exercise_answers_array.standard_by_ids(old_left_standard_choices).destroy_all
end end
if new_left_standard_choices.count > 0 #新建标准答案 if new_left_standard_choices.count > 0 #新建标准答案
@ -258,7 +256,6 @@ class ExerciseQuestionsController < ApplicationController
#删除多余的选项 #删除多余的选项
if old_ex_answer_choice_ids.count > new_ex_answer_choice_ids.count #有减少的填空 if old_ex_answer_choice_ids.count > new_ex_answer_choice_ids.count #有减少的填空
st_count += 1
delete_ex_answer_choice_ids = old_ex_answer_choice_ids - new_ex_answer_choice_ids delete_ex_answer_choice_ids = old_ex_answer_choice_ids - new_ex_answer_choice_ids
old_ex_answer.standard_by_ids(delete_ex_answer_choice_ids).destroy_all old_ex_answer.standard_by_ids(delete_ex_answer_choice_ids).destroy_all
end end
@ -284,7 +281,6 @@ class ExerciseQuestionsController < ApplicationController
ex_answer_pre[n-1].update(standard_option) ex_answer_pre[n-1].update(standard_option)
end end
if new_add_choice.count > 0 #表示有新增的 if new_add_choice.count > 0 #表示有新增的
st_count += 1
new_add_choice.each do |i| new_add_choice.each do |i|
standard_option = { standard_option = {
:exercise_question_id => @exercise_question.id, :exercise_question_id => @exercise_question.id,
@ -306,7 +302,6 @@ class ExerciseQuestionsController < ApplicationController
ex_answer_pre[index].update(standard_option) ex_answer_pre[index].update(standard_option)
end end
if new_delete_choice.count > 0 #表示填空题的答案有删减的 if new_delete_choice.count > 0 #表示填空题的答案有删减的
st_count += 1
new_delete_choice.each do |d| new_delete_choice.each do |d|
ex_answer_pre[d-1].destroy ex_answer_pre[d-1].destroy
end end

@ -0,0 +1,23 @@
class AddOldExerciseTiankongChoiceId < ActiveRecord::Migration[5.2]
def up
#类型为3 的问题答案及标准答案更新exercise_choice_id 为1即表示第一空
exercise_question_ids = ExerciseQuestion.where("question_type = 3").pluck(:id)
ExerciseAnswer.where(exercise_question_id: exercise_question_ids,exercise_choice_id: nil).update_all(exercise_choice_id:1)
ExerciseStandardAnswer.where(exercise_question_id: exercise_question_ids,exercise_choice_id: nil).update_all(exercise_choice_id:1)
exercise_bank_question_ids = ExerciseBankQuestion.where("question_type =3").pluck(:id)
ExerciseBankStandardAnswer.where(exercise_bank_question_id: exercise_bank_question_ids).update_all(exercise_bank_choice_id:1)
end
def down
#类型为3 的问题答案及标准答案更新exercise_choice_id 为1即表示第一空
exercise_question_ids = ExerciseQuestion.where("question_type = 3").pluck(:id)
ExerciseAnswer.where(exercise_question_id: exercise_question_ids,exercise_choice_id: 1).update_all(exercise_choice_id:nil)
ExerciseStandardAnswer.where(exercise_question_id: exercise_question_ids,exercise_choice_id: 1).update_all(exercise_choice_id:nil)
exercise_bank_question_ids = ExerciseBankQuestion.where("question_type =3").pluck(:id)
ExerciseBankStandardAnswer.where(exercise_bank_question_id: exercise_bank_question_ids).update_all(exercise_bank_choice_id:nil)
end
end
Loading…
Cancel
Save