Я ищу способ запроса модели на основе детей в ассоциации has_many.
У меня есть эти модели
class User < ApplicationRecord
has_many :members
has_many :squads, through: :members
end
class Squad < ApplicationRecord
has_many :members
has_many :users, through: :members
end
class Member < ApplicationRecord
belongs_to :user
belongs_to :squad
end
Я в основном использую класс Member дляобеспечить связь между пользователем и Squad, чтобы он мог хранить информацию о членстве, такую как роль, должность, номер и т. д.
Цель состоит в том, чтобы Member
модель store User
информация о членстве, поскольку она относится клюбой Squad
.Пользователь может быть владельцем одного отряда, быть членом другого и не быть участником еще одного отряда.
Я пытаюсь отобразить ссылку «Присоединиться» в моем index.html.erb для всех пользователей.которые не имеют никакого членского соединения с отрядом.
В настоящее время работает с
<% @squads.each do |squad| %>
<td><%= squad.name %></td>
<% if Squad.includes(:members).where( 'members.user_id' => params[:users]).exists? %>
<td><%= link_to 'Join', join_squad_path(:id => squad) %></td>
<% end %>
<% end %>
с первичной линией
<% if Squad.includes(:members).where( 'members.user_id' => params[:users]).exists? %>
также пробовал такие вещи, как
User.includes(:squads, :members).where('squads.id = ? AND members.users = ?', squad, current_user)
u = squad.users.includes(:member).where('member.user = ?', current_user)
Member.where.not("squad = #{squad.id}").find(user: current_user.id)
У меня есть переменная экземпляра для каждого | squad |и иметь current_user.id доступным для вошедшего в систему пользователя (используя Devise )
Ссылка Руководство по Ruby on Rails: основы ассоциации - есть много через ассоциацию