やりたいこと
自分が所属するグループ(ここではUnion)の全ての投稿をpost index で表示したいのですがどう考えてもできません。
自分が所属するUnionは2つあります。
1、自分が作成したUnion。 これはUnionのuser_id に @current_userのidが保存されています。
2、他人が作成したUnionに参加している場合。 この場合は中間テーブルであるUnion_user の user_id に @current_userの id が保存されています。
自分が所属するある一つのUnionに投稿されているPostを表示するのは以下で可能かと思います。
def posts_index @union = Union.find_by(id: params[:id]) @user = @union.user @posts = Post.where(union_id: params[:id]).order(created_at: :desc) end <% @posts.each do |post| %> <div class="posts-index-item"> . . <% end %>
しかし、自分が所属しているUnionが複数ある場合に全てのpostを表示させることができません。
やったこと
def index @user = User.find_by(id: @current_user.id) @unions = Union.where(user_id: @user.id).order(created_at: :desc) end <% @unions.each do |union| %> ← 自分が作成したUnion <div class="unions-index-item"> . . <% end %> <% @user.unions.each do |union| %> ← 他人が作成したUnion <div class="users-index-item"> . . <% end %>
以上のコードのようにして、自分が作成したUnion, 他人が作成したけど自分が所属するUnion index は表示できます。
そしてそのUnionsのポストを以下のように取り出そうとしてもうまくできません。
def user_posts_index @user = User.find_by(id: @current_user.id) @unions = Union.where(user_id: @user.id).order(created_at: :desc) end <% @unions.each do |union| %> <% post = Post.find_by(union_id: union.id)%> <div class="posts-index-item"> . . <% end %>
どうしたらできるでしょうか?
回答1件
あなたの回答
tips
プレビュー