class BoardChannel < ApplicationCable::Channel def subscribed board = Board.find_by(id: params[:board_id]) unless board reject return end current_participant = board.game.participants.find_by(user: current_user) # ゲーム参加者でなければ一律拒否 unless current_participant reject return end # 権限判定:共通掲示板/公開掲示板/メンバー/履歴モードのいずれかで許可 if board.global? || board.is_public? || board.member?(current_participant) || board.history_mode? stream_from "board_#{board.id}" else reject end end def unsubscribed # cleanup end end