Zapisanie wybranych odpowiedzi testu wielokrotnego wyboru w params

Witam,
Próbuję stworzyć test wielokrotnego wyboru, jednak mam spory problem z zapisem danych z formularza do parametrów.
Otóż taki param, musiałby składać się z tablicy tablic. Tak aby móc zapisać kilka odpowiedzi zaznaczonych przez użytkownika w każdym pytaniu.

Na ten moment wymyśliłem coś takiego:

<% provide(:title, t(:quiz)) %>
<div class="center jumbotron">
  <h2><%= t(:quiz) %></h2>
  <div>
    <%= form_for(:test, url: quiz_path) do |f| %>
      <% @quiz.tasks.each_with_index do |task, index| %>
        <div class="control-group">
          <% @task = Task.find_by(id: task) %>
          <%= @task.text %>
          <% answers = @task.correct_answers + @task.wrong_answers %>
          <% answers.shuffle! %>
          <fieldset>
            <% answers.each do |answer| %>
              <div class="checkbox">
                <%= f.check_box("task][#{index}", {class: "checkbox", multiple: true}, answer, nil)%>
                <%= f.label "task#{index}", answer %>
              </div>
            <% end %>
          </fieldset>
        </div>
      <% end %>
      <%= f.submit t(:finish_quiz), class: "btn btn-lg btn-primary" %>
    <% end %>
  </div>
</div>

Wzór paramu utworzony z tego kodu wygląda tak:
params[:test][:task[index]][array z odpowiedziami użytkownika]
Co w praktyce wygląda tak:

params[:test][:task0][10,5,"cebula"]
params[:test][:task1][4,3,-120]
params[:test][:task2]["tak"html","css"]

W kontrolerze potrzebuję porównać czy tablice z odpowiedziami użytkownika pokrywają się z tablicami poprawnych odpowiedzi, a więc posortować je, przyrównać i jeśli się zgadzają to przydzielić punkty.
Problem jest jednak taki, że nie wiem jak za bardzo po tym iterować.

A więc moje pytanie brzmi:
Czy jest jakiś inny lepszy, bardziej elegancki i optymalny sposób na wykonanie takiego czegoś?
Jeśli nie ma to:
Czy aby iterować po tym co ja wytworzyłem, musiałbym użyć metaprogramowania? Jak to zrobić?