2014-05-10 9 views
0

안녕 난 캉캉을 사용하려고하지만, 즉 매우 자극적 오류가 있습니다초기화되지 않은 상수

class EditionsController < ApplicationController 
    before_filter :authenticate_user! #devise 
    load_and_authorize_resource 
    def index 
    end 
end 

이 경로로 :

get "editions/index" 
컨트롤러 초기화되지 않은 상수 판

및 그러한 능력 :

user ||= User.new # guest user (not logged in) 
if user.has_role? "admin" 
    can :manage, Edition 
    cannot :commission 
else 
    can :read, :commission 
end 

그리고 추가 질문, 단수 (이름) 컨트롤러에 대해 cancan 능력을 어떻게 만들 수 있습니까? 예 : PhotoController

+0

는 교류가 있습니까 'Edition'이라는 tiveRecord 모델? – Leantraxxx

+0

예, load_and_authorize_resource를 authorize_resource : class => false로 변경했습니다. 구성에 대한이 규칙은 매우 기만적 일 수 있습니다. 물론 : 에디션 대신 에디션 – bkowalczyyk

답변

6

문제는 사용자 지정 클래스를 사용하고 있다는 것입니다.

캉캉는 모델 클래스의 이름과 일치하도록 컨트롤러 클래스 이름을 singularize을 시도하고 때로는 우리가 기대되지 않습니다 :

...

모델 클래스가 다르게 네임 스페이스하는 경우 컨트롤러를 지정하려면 : class 옵션을 지정해야합니다.

출처 : 내 경우에는, 내가 어떤 모델 클래스를했다, 그래서 나는 방금 추가

https://github.com/ryanb/cancan/wiki/authorizing-controller-actions "클래스 => false"를 명령의 끝에 :

load_and_authorize_resource :class => false 
1

당신이 ApplicationController에 정의 load_and_authorize_resource이 만이 컨트롤러에 대한 재정의하려면 :

class EditionsController < ApplicationController 
    skip_load_and_authorize_resource 

    def index 
    @editions = Edition.accessible_by(current_ability).order(:date) 
    end 
end