Я создаю приложение для опроса, и часть этого приложения имеет две модели:
#ResponseSet
has_many :responses
accepts_nested_attributes_for :responses
#Response
belongs_to :response_set
belongs_to :answer
Например, у вас может быть опрос с вопросом с несколькими вариантами ответов, где вы можете выбрать несколько ответов (ЧтоКакие у вас есть домашние животные? Собака, кошка, лошадь).
Что должно произойти, так это то, что когда вы отправляете свои ответы на опрос, запись добавляется в таблицу Response
для каждого ответа.Поэтому, если вы выбрали, что у вас есть собака, кошка и лошадь, будут добавлены 3 записи, каждая из которых ссылается на модель Answer
через :answer_id
.
Я могу сделать это для вопросов с одним ответом, ноодин с несколькими ответами ломает мне голову.
Это становится более сложным, потому что в одном опросе может быть несколько вопросов, каждый с несколькими ответами.
Для справки, текущие имена полей формы выглядят так:
response_set[responses_attributes][0][answer_id]
response_set[responses_attributes][1][answer_id]
response_set[responses_attributes][2][answer_id]
Генерируется следующим образом:
<%= form_for @response_set, :url => complete_survey_path do |f| %>
<%= f.fields_for :responses do |response| %>
<%= response.check_box :answer_id %>
<% end %>
<% end %>
Таким образом, это будет поле для answer_id
в атрибутах response_atributes для 3 различных вопросов.