#前提条件
group:memberrをたくさん持つ
member :たくさんのgroupに所属する
group_member :中間テーブル
各グループの詳細ページで参加中と不参加のメンバーを一覧表示しています。
#問題点
group1のページでは参加中と不参加のメンバーを区別できましたが、
一度グループに参加してしまうと他のグループで不参加に表示されないです。
※teset2も不参加ですが表示されません。
該当コード
# グループ詳細ページ <p id="notice"><%= notice %></p> <h1> <%= @group.name %>のメンバー一覧 </h1> <h2> グループに参加のメンバー </h2> <table> <thead> <tr> <th>Name</th> <th>Role</th> </tr> </thead> <tbody> <%= form_with(model:[@group, @group_member], local: true) do |f| %> <% @group.group_members.each do |group| %> <tr> <td><%= group.member.name %></td> </tr> <% end %> <% end %> </tbody> </table> <h2> グループに不参加のメンバー </h2> <table> <thead> <tr> <th>Name</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @not_groups.each do |member| %> <tr> <td><%= member.name %></td> </tr> <% end %> </tbody> </table>
class GroupsController < ApplicationController def show # ここの定義で詰まっています。 @not_groups = Member.where.not(id: Member.joins(:members).group(:member_id)) end end
##仮説
コントロラーの**Member.joins(:groups)**で、すべてのグループからmember_idを参照しているから、
一度でも参加すると不参加に表示されないでいる。
##やりたいこと
各グループのidを参照して、不参加のメンバーを表示したいです。
##試したこと
モデルにメソッドを追加し、コントロラーやビューファイルで組み合わせてみましたがエラーになりました。
group.rb
1 has_many :group_members 2 has_many :members, through: :group_members 3 accepts_nested_attributes_for :group_members 4 5 # 追加 6 scope :search_id, ->(group_id) { where(id: group_id) }
自分でも整理できていないところがあり、うまくまとめられずすみません。
何か解決の糸口になるヒントを頂けると幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/15 13:35