Проверка записи через отношение has_many в Ruby on Rails - PullRequest
0 голосов
/ 29 июня 2018

У меня есть следующие модели:

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, не отображать форму."

...