«Каждая команда может получить доступ ко всем принадлежащим им активным записям», - по вашему мнению, это ваш ответ.Вся запись должна принадлежать команде.Pundit предназначен для создания политик в отношении действий (с ролями или без), вам нужен идентификатор группы, чтобы знать, откуда поступают записи, чтобы Pundit не был вашим лучшим вариантом.Это то, что я бы сделал
class Team < ApplicationRecord
has_many :users
has_many :notes
end
class Note < ApplicationRecord
belongs_to :team
end
class User < ApplicationRecord
belongs_to :team
end
После входа в систему у вас будет current_user, поэтому у вас есть команда тоже
class ApplicationController < ActionController::Base
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end
def current_team
return unless current_user
@current_team ||= current_user.team
end
end
, тогда вы можете связать ассоциации (или использовать делегатов), чтобы получитьзаписи
class NotesController < ApplicationController
def index
@notes = current_user.team.notes
end
end
или
class NotesController < ApplicationController
def index
@notes = current_team.notes
end
end
Надеюсь, это поможет.