class BoardMembership < ApplicationRecord
  belongs_to :board
  belongs_to :participant

  # 参加中かどうか（退出していない）
  def active?
    left_at.nil?
  end

  # 退出処理
  def leave!
    update!(left_at: Time.current)
  end

  # 既読位置を更新
  def mark_read!(post_id)
    # 既存の既読位置より新しい場合のみ更新（巻き戻り防止）
    # ただし今回は単純に最新をセットする形で良い
    update!(last_read_post_id: post_id)
  end
end
