在Ruby on Rails中检查has_many关系中的记录

时间:2018-06-29 04:20:26

标签: ruby-on-rails activerecord relationship

我有以下型号:

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_user_group中的任何event_user创建了一个选择记录,则不显示该表单。”

0 个答案:

没有答案