У меня есть следующие модели:
Event
has_many :user through :event_users
has_many :event_users
User
has_many :events, through: :event_users
has_many :event_users
has_many :event_user_groups
EventUser
belongs_to :event
belongs_to :user
belongs_to :event_user_group, foreign_key: "group_id"
has_many :choices
EventUserGroup
belongs_to :event
has_many :users, through: :event_users
has_many :event_users, foreign_key: :group_id
Choices
belongs_to :event_user
Обычно пользователи голосуют за конкретного пользователя в каждой группе в рамках события. Страница события имеет форму для каждой группы, они выбирают пользователя, который становится их «выбором» для этой группы.
<% @event.event_user_groups.each do |group| %>
<%= form_for @event, :url => { :controller => "events", :action => :create_choice }, validate: true do |f| %>
<h4> <%= group.try(:name) %> </h4>
<% @event.event_users.where(:group_id => group.id).each do |user| %>
<%= radio_button("groups", "user", user.id) %>
<% end %>
<% end %>
<% end %>
Это все работает отлично, однако в настоящее время пользователи могут голосовать несколько раз, потому что форма отображается для каждой группы при загрузке страницы, независимо от того, уже создали ли они выбор для event_user в этой группе, так что я? я пытаюсь сделать, это построить оператор if внутри первого каждого цикла, чтобы определить, должна ли форма отображаться ...
"Если вошедший в систему пользователь уже создал запись выбора для любого из event_users в этой группе event_user_group, не отображать форму."