2014-01-22 2 views
1

я в настоящее время имеют следующую структуру таблицы:Рубин/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 

Если отсортировать оба массива и сравнить их, вы можете проверить, если они равны.

Смежные вопросы