내 프로젝트에서 Devise 인증을 사용하는 사용자 클래스가 있습니다. 각 사용자에게는 하나의 역할이 있습니다. 예를 들어 관리자는 역할 # 1입니다.레일즈 : cancancan gem 조건이 작동하지 않습니다.
역할은 클래스이며 role_id를 기준으로 역할과 사용자가 연결됩니다. 관리자는 1의 role_id를 갖습니다.
각 사용자에 대한 권한을 관리하기 위해 cancancan gem이 설치되었습니다. 관리자 만 사용자 계정을 만들 수 있습니다. 그래서, 내가 능력이 클래스에서 쓴 : 내 관리자로 로그인하고 새로운 사용자 페이지에 액세스하려고 할 때
def new
@user = User.new
authorize! :manage, @user
end
문제는 내 사용자 컨트롤러에서
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role_id == 1
can :manage, :user
else
cannot :manage, :user
end
end
,이이 , 나는 cancancan으로부터 그 페이지에 접근 할 수있는 권한이 없다는 메시지를 받는다.
나는 내 상태인지 모르거나 내가 액세스려고 할 때 도움을 ...
감사를 user.role_id하거나.
는 cancancan 보석을 참조하십시오 https://github.com/CanCanCommunity/cancancan
편집 :
내 IDE 그것이 CURRENT_USER를 찾을 수 없다는 경우가 정상입니까? 보시다시피
는 읽기 권한 후 @article있다 : 당신은 GitHub의에 체크하면
또한, cancancan 사용하는 방법에 대한 예제가있다.
문제가 정확하지이었다 :user
이었다 그래서 나는 @user
문제 : 사용자가 올바르지 않습니다. 모델 일 때 ":"이없는 모델의 이름에 대문자를 먼저 써야합니다. 따라서 대신 : user, 사용자 여야합니다. –