I have a question about Pundit.
Basically I want to do this:
class Scope < Scope
def resolve
scope.select {|employee| (employee.restaurant == @restaurant) && employee.actif}
end
end
but I don't know how I can pass @restaurant
from my controller into my policy.
here's my index method:
def index
@restaurant = Restaurant.find(params[:restaurant_id])
@employees = policy_scope(Employee)
end
I tried to do this:
class Scope
attr_reader :user, :scope, :record
def initialize(user, scope, record)
@user = user
@scope = scope
@record = record
end
def resolve
if is_user_manager_or_gerant_or_admin?
scope.select {|employee| (employee.restaurant == record) && employee.actif}
end
end
private
def is_user_manager_or_gerant_or_admin?
user.admin || (user.accreditations.select {|a| a.restaurant == record})[0].role == ("Gérant" || "Manager")
end
end
with this index method:
def index
@restaurant = Restaurant.find(params[:restaurant_id])
@employees = EmployeePolicy::Scope.new(current_user, Employee, @restaurant).resolve
end
But I'm getting this error:
Pundit::PolicyScopingNotPerformedError in EmployeesController#index