class BoardChannel < ApplicationCable::Channel def subscribed board = Board.find_by(id: params[:board_id]) unless board reject return end # 権限チェック # ゲーム参加者を取得(current_userから) current_participant = board.game.participants.find_by(user: current_user) # 参加権限があるか(メンバー、または終了済み、または公開ボード) # コントローラの判定ロジックと合わせる # 共通掲示板は誰でも購読OK(ただしゲーム参加者に限る) if board.global? stream_from "board_#{board.id}" if current_participant elsif board.is_public? stream_from "board_#{board.id}" if current_participant elsif board.member?(current_participant) stream_from "board_#{board.id}" elsif board.history_mode? stream_from "board_#{board.id}" if current_participant else reject end end def unsubscribed # Any cleanup needed when channel is unsubscribed end end