前提・実現したいこと
当方チャットアプリのグループ機能を実装中です。
画面の左にグループ一覧を表示させており、グループ名をクリックすると
1、ユーザーが所属しているグループだったらメッセージ一覧画面へ遷移
2、ユーザーがまだ所属していないグループだったらエラーのフラッシュメッセージを表示
の分岐を作りたいと考えております
この際、ifの条件分岐でcurrent_userがクリックしたグループのidを所持していれば、1へ、それ以外(else)は2へ、という形で考えているのですが、current_userがクリックしたグループのidを所持しているかの確認方法が思いつきません
何かスマートなやり方はないでしょうか、ご教授いただけたら幸いですm(_ _)m
テーブルやルーター
userテーブル
groupテーブル
messageテーブル
group_usersテーブル(中間テーブルでuser_idとgroup_idが入っています)
以上4テーブル
messageはgroupにネストされております↓
resources :groups do resources :messages end
該当のソースコード
routes↓
Rails.application.routes.draw do devise_for :users, :controllers => { :registrations => 'users/registrations', :sessions => 'users/sessions' } devise_scope :user do get "sign_in", :to => "users/sessions#new" get "sign_out", :to => "users/sessions#destroy" end root 'groups#index' resources :groups do member do get :join end resources :messages end end
_group.index.html.erb↓
<div class="Main__left"> <div class="Main__left__search"> <div class="Main__left__search-squeeze"> <form action="#" class="Main__left__search-squeeze-box"> <input type="checkbox"> </form> <p>参加中のグループに絞る</p> </div> <form action="#" class="Main__left__search-main"> <input type="text" placeholder="グループを検索" class="Main__left__search-main-text"> <input type="submit" value="検索" class="Main__left__search-main-btn"> </form> </div> <% groups.each do |group| %> <div class="Main__left__group"> <%= link_to(group_messages_path(group), class: 'Main__left__group-a') do %> <div class="Main__left__group-name"> <%= group.group_name %> </div> <div class="Main__left__group-text">最新テキスト</div> <div class="Main__left__group-time">最新更新日時2020/06/20</div> <%= link_to "参加する", join_group_path(group), class: 'Main__left__group-btn' %> <% end %> </div> <% end %> </div>
group.rb↓
class Group < ApplicationRecord has_many :group_users has_many :users, through: :group_users has_many :messages end
message.rb↓
class Message < ApplicationRecord belongs_to :user belongs_to :group end
user.rb↓
class User < ApplicationRecord has_many :group_users has_many :messages has_many :groups, through: :group_users end
group_user.rb↓
class GroupUser < ApplicationRecord belongs_to :group belongs_to :user end
回答1件
あなたの回答
tips
プレビュー