我目前有以下表结构:
Questions
* id
* prompt
Options
* id
* name
* image
Question Assignments # Acts as a join table for the tables above and holds #
# a boolean of whether an option is "correct" or not. #
* question_id
* option_id
* correct
让我们说我们将当前信息存储在数据库中:
Question:
id: 4
prompt: "Please select the green pictures. Choose 3."
Question_assignments:
option_id: 1
question_id: 4
correct: true
option_id: 2
question_id: 4
correct: false
option_id: 3
question_id: 4
correct: true
option_id: 4
question_id: 4
correct: false
为了获得“正确”的答案,用户必须仅提交 1 和 3 选项。提交选项的任何其他组合都是不正确的。
我的问题是:如何重复和评估用户提交的答案,无论整体问题是否正确?
例如,用户可能会提交以下内容(根据上述情况,这将是一个“错误”的答案):
'question_id' => 4
'option_ids[]' => [1, 2, 4]
我在想的逻辑是:
根据question_id(4)找到所有正确答案:哪个会 返回'1'和'3'
迭代用户提交的值,看它是否等于'1'或'3'
那么不知道该怎么办?
希望这是有道理的,因为它很难表达出来。
非常感谢!
答案 0 :(得分:2)
一个选项可能是:为问题4获取正确的选项,将这些选项插入数组,比如correct_options
然后检查:
if option_ids.sort == correct_options.sort
puts "Correct answer!"
else
puts "Sorry, wrong answer :("
end
如果对两个数组进行排序并进行比较,则可以检查它们是否相等。