J'utilise CanCan et j'ai rencontré une erreur que je n'arrive pas à diagnostiquer.Problème avec le chargement des ressources CanCan
Certains utilisateurs testant mon application ont reçu NoMethodError: undefined method 'where' for nil:NilClass
en provenance de la ligne indiquée ci-dessous.
Dans quelles circonstances load_and_authorize_resource
laisserait @jobs
comme nil
à ce stade?
class JobsController < ApplicationController
load_and_authorize_resource
def index
if Job::STATES.include? params[:state]
if params[:state] == 'in_progress'
@jobs = @jobs.where(['state = ? or state = ?', params[:state], 'needs_confirmation'])
else
###################################################
# Error thrown here
@jobs = @jobs.where(['state = ?', params[:state]])
###################################################
end
end
end
end
Et le code relevent cancan:
if user.role? :employee
can :read, Job do |j|
(j.employee == user) or (j.employee == nil)
end
end
Pouvez-vous montrer le code 'cancan' pertinent? – rdvdijk
modifié avec le code CanCan approprié – Luke