|
|
|
@ -113,17 +113,35 @@ module ExercisesHelper
|
|
|
|
|
if ex.question_type <= Exercise::JUDGMENT #选择题和判断题
|
|
|
|
|
standard_answer = ex.exercise_standard_answers.pluck(:exercise_choice_id).sort #标准答案的位置
|
|
|
|
|
right_users_count = 0 #该问题的回答正确的人数
|
|
|
|
|
|
|
|
|
|
#计算每个问题的答案人数
|
|
|
|
|
# commit_users.transaction do
|
|
|
|
|
#
|
|
|
|
|
# if ex.question_type == Exercise::MULTIPLE #多选题
|
|
|
|
|
# user_ids.each do |user_id|
|
|
|
|
|
# answer_choice_array = effictive_users.select(:user_id,:exercise_choice_id).where(user_id:user_id)&.map {|s| s.exercise_choice.choice_position}.uniq
|
|
|
|
|
# if answer_choice_array.sort == standard_answer
|
|
|
|
|
# right_users_count += 1
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# else #单选题和判断题
|
|
|
|
|
# user_ids.each do |user_id|
|
|
|
|
|
# answer_choice_array = effictive_users.select(:user_id,:exercise_choice_id).find_by(user_id:user_id)&.exercise_choice.choice_position
|
|
|
|
|
# if [answer_choice_array] == standard_answer
|
|
|
|
|
# right_users_count += 1
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
user_ids.each do |user_id|
|
|
|
|
|
answer_choice_array = effictive_users.select(:user_id,:exercise_choice_id).find(user_id:user_id)&.map {|s| s.exercise_choice.choice_position}.uniq
|
|
|
|
|
if answer_choice_array.sort == standard_answer
|
|
|
|
|
right_users_count += 1
|
|
|
|
|
if ex.question_type == Exercise::MULTIPLE
|
|
|
|
|
answer_choice_array = effictive_users.select(:user_id,:exercise_choice_id).where(user_id:user_id)&.map {|s| s.exercise_choice.choice_position}.uniq
|
|
|
|
|
if answer_choice_array.sort == standard_answer
|
|
|
|
|
right_users_count += 1
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
answer_choice_array = effictive_users.select(:user_id,:exercise_choice_id).find_by(user_id:user_id)&.exercise_choice.choice_position
|
|
|
|
|
if [answer_choice_array] == standard_answer
|
|
|
|
|
right_users_count += 1
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
percent = effictive_users_count > 0 ? (right_users_count / effictive_users_count.to_f).round(3)*100 : 0.0
|
|
|
|
|
ex.exercise_choices.each do |c|
|
|
|
|
|
right_answer = standard_answer.include?(c.choice_position) #选项的标准答案为选项的位置
|
|
|
|
|