2010-12-03 2 views
0

저는 Ryan B의 자습서를 따르고 있습니다.하지만 사용자의 역할을 조사 할 때 뭔가 잘못되었습니다.CanCan의 Nil이 ability.rb 모델의 매개 변수를 초기화합니다.

왜 매개 변수를 검사 할 때 초기화 매개 변수가 없습니까? Ryan의 튜토리얼에서 initialize 매개 변수와 Person Model의 'user'매개 변수를 사용하여 Person 객체의 initialize 매개 변수 사이에 연결이 있는지 확인합니다. 나는 여기서 기본적인 것을 잊어 버렸는가? 이건 내 코드 야, 고마워!

class Ability 
    include CanCan::Ability 

    def initialize(person) 
    raise person.inspect 
    can :read, :all 
    end 
end 

답변

0

이 코드를 실행할 때 로그인 한 사용자가없는 것 같습니다. 로그인하지 않은 사용자에 대한 사용 권한을 확인하기 위해 일종의 게스트 사용자를 생성해야합니다.

def initialize(person) 
    user ||= User.new 
    if user.role? :somerole 
     can :read, :all 
    else 
    #whatever guest can do 
    end 
    end 
+0

그렇다면 person.nil을 테스트 할 수도 있습니다. 게스트 권한을 할당합니다. –

+0

관리자로 로그인했을 때 테스트했지만 아무런 가치도 얻지 못했습니다. CanCan과 결합하기 위해 먼저 AuthLogic을 설치해야합니까? 우리가 CanCan과 함께 역할을 추가 할 수 있도록 세션의 사용자 상태를 알고 있다면 추측 할 수 있습니까? 그러나 가능한 경우 모델에서 세션 데이터를 가져올 수 있습니까? –

+3

해결 된 README 파일에서 다른 사용자 개체를 사용하는 경우 current_ability 메서드를 재정의해야합니다. David Sulc에게 감사드립니다. –

관련 문제