首页 > 解决方案 > 在 Ruby on Rails 中检查 has_many 关系中的记录

问题描述

我有以下型号:

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 创建了选择,所以我正在尝试do 是在第一个 each 循环内构造一个 if 语句,以确定是否应显示表单...

“如果登录用户已经为此 event_user_group 中的任何 event_users 创建了选择记录,则不要显示该表单。”

标签: ruby-on-railsactiverecordrelationship

解决方案


推荐阅读