Ruby / Rails 4 - 满足特定条件

时间:2014-01-22 23:34:24

标签: ruby loops ruby-on-rails-4

我目前有以下表结构:

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]

我在想的逻辑是:

  1. 根据question_id(4)找到所有正确答案:哪个会 返回'1'和'3'

  2. 迭代用户提交的值,看它是否等于'1'或'3'

  3. 那么不知道该怎么办?

  4. 希望这是有道理的,因为它很难表达出来。

    非常感谢!

1 个答案:

答案 0 :(得分:2)

一个选项可能是:为问题4获取正确的选项,将这些选项插入数组,比如correct_options然后检查:

if option_ids.sort == correct_options.sort
  puts "Correct answer!"
else
  puts "Sorry, wrong answer :("
end

如果对两个数组进行排序并进行比较,则可以检查它们是否相等。