2013-05-07 3 views
0

내 레일 응용 프로그램에서 내 사용자는 한 번 로그인하여 원하는대로 계정을 전환 할 수 있습니다. 권한을 데이터베이스의 계정 수준에서 설정했기 때문에 권한을 다시 초기화해야합니다.CanCan 능력 정의

초기 생각은 계정 변경을 감지했지만이를 수행하는 방법을 모르는 경우 능력 클래스를 초기화하는 것입니다.

물론 다른 아이디어에 대해서도 열려 있습니다. 나는 CanCan을 처음 사용합니다.

+1

레일스 앱의 거의 모든 다른 오브젝트와 마찬가지로 'Ability' 인스턴스는 모든 요청에 ​​대해 작성되고 삭제됩니다. 수동으로 다시 초기화하지 않아도됩니다. –

답변

0

Ability 클래스는 모든 사용자 권한이 정의되는 곳입니다.

예 :

class Ability 

    include CanCan::Ability 

    def initialize(user) 
    user ||= User.new # guest user (not logged in) 
    if user.admin? 
     can :manage, :all 
    else 
     can :read, :all 
    end 
    end 
end 

방법은 권한을 정의하는 데 사용되며 두 개의 인자를 필요로한다 "있다". 첫 번째는 권한을 설정하는 작업이고 두 번째는 설정중인 개체 클래스입니다.

관련 문제