2014-01-22 148 views
1

目前,我有如下表結構:的Ruby/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 

爲了達到「正確」的答案,用戶將不得不僅僅提交選項和。提交的選項的任何其他組合都是不正確的。

我的問題是:如何迭代和評估用戶提交的答案,不管整體問題是否正確?

例如,用戶可提交以下(這將是基於上述情形一個「錯誤」的答案):

'question_id' => 4 
'option_ids[]' => [1, 2, 4] 

我想到會是這樣的邏輯:

  1. 查找基於question_id(4)所有正確答案:這將 回報 '1' 和 '3'

  2. 迭代通過用戶提交的VALU es,看它是否等於'1'或'3'

  3. 然後不知道該從哪裏做什麼?

希望這是有道理的,因爲它可能很難闡明。

非常感謝!

回答

2

一種選擇是:取對問題4正確的選項,請將這些選項到一個數組,說correct_options然後檢查:

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

如果他們兩個數組進行排序和比較,您可以檢查它們是否等於。