Я новичок в ruby on rails и работаю над своим первым углубленным приложением. Он состоит из четырех таблиц: Вопросы, Параметры, Ответы и Пользователи. Есть список вопросов, и пользователь может проголосовать за уникальный вариант (хранящийся в таблице соединений «Ответы»), я пытаюсь разобраться в ассоциациях таблиц.
Вот как я настроил свои отдельные файлы RB:
class Question < ActiveRecord::Base
has_many :options
has_many :answers, :through => :options
end
class Option < ActiveRecord::Base
belongs_to :question
has_many :answers
end
class Answer < ActiveRecord::Base
belongs_to :user
belongs_to :question
belongs_to :option
end
class User < ActiveRecord::Base
has_many :answers
has_many :questions, :through => :answers
end
Контроллер моих вопросов настроен так, чтобы включить таблицу параметров:
@questions = Question.includes(:options).all
и тело таблицы в моем файле index.html.erb:
<tbody>
<% @questions.each do |question| %>
<tr class="<%= cycle('lineOdd', 'lineEven') %>">
<td><%= question.question_text %></td>
<td><%= link_to 'Show', question %></td>
<td><%= link_to 'Edit', edit_question_path(question) %></td>
<td><%= link_to 'Destroy', question, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% question.options.each do |option_text| %>
<tr class="backgroundColor1">
<td class="optionCell"> <%= option_text.option_text %> </td>
</tr>
<% end %>
<% end %>
</tbody>
В классе «Вопрос» я использовал «has_many :answers, :through => :options» — это правильный способ сделать это и как вывести общее количество голосов в строке таблицы под соответствующим параметром.
Нужно ли добавлять или изменять код контроллера вопросов?
Это мой первый пост, извините, если недостаточно информативно!
Спасибо