Я связываю пользователей с данными фирмами через таблицу соединений, потому что мне нужно иметь кучу пользователей с каждой фирмой и наоборот.Pundit Scoping для владения моделью через таблицу Join - Rails 4
class User
has_many :firm_connections, dependent: :destroy
has_many :firms, through: :firm_connections
end
class FirmConnection
belongs_to :user
belongs_to :firm
end
class Firm
has_many :firm_connections
has_many :users, through: :firm_connections
end
Мой вопрос, когда пользователь попадает на страницу индекса для фирм, как я это сфера только показать, что эти пользователи связаны с?
class FirmPolicy < ApplicationPolicy
class Scope < Scope
def resolve
if user.admin?
scope.all
else
scope.where #only the firms associated with that user
end
end
end
Нужно ли создавать область на уровне фирмы, которая принимает @user? Или я могу сделать это все напрямую? Я мог взломать что-то вместе, но еще не обмотал голову вокруг пандита, поэтому любое направление было бы очень благодарным!
так:
def self.associated_with(user)
all.select { |m| m.users.include?(user) }
end