2012-08-13 4 views
2

저는 devise-cancan-rolify 설정을 사용하여 사용자를 처리하고 있습니다. 가입시 Reader 역할을받습니다. 관리자 인터페이스에서 Writer 역할로 승격 할 수 있기를 원합니다. 문제는 롤 (role)과 users_roles 테이블을 설정하는 방식이 다소 복잡하다는 것입니다. 특히 users_roles 모델이 없으므로 아마추어입니다. 여기에 올바른 길을 안내 할 수있는 사람이 있습니까?cancan 및 rolify로 역할 관리

+0

사용자가 관리자로 로그인 할 때 원하는 질문을 이해하지 못하면 관리자 (작성자)의 능력이 있어야하며 동일한 사용자 테이블을 보유하고 있어야합니다. – AnkitG

답변

18

devise + cancan + rolify 설정에 대해 this tutorial을 보셨기를 바랍니다.

이러한 단계를 수행 한 경우에는 users, roles 및 users_roles 테이블이 있어야합니다. users_roles 모델이 필요하지 않습니다.

먼저해야 할 일은 사용자를 지정하고 역할을 확인할 수 있는지 확인하는 것입니다. 이 당신을 위해 작동하는 경우

당신은

user.add_role "admin" 
user.has_role? :admin 

를 계속하기 전에이 코드를 실행할 수 (모든 사용자에 콘솔에서 이러한 문서의 사용 부분에서 시도)한다, 지금 당신은 리더 역할을 할당해야

class User 
    after_create :assign_reader_role 
private 
    def assign_reader_role 
    self.add_role "reader" 
    end 
end 

다음 단계는/추가를 만들고 관리 인터페이스에서 작가의 역할을 제거하는 것입니다 : 새로운 사용자,이 작업을 수행하는 가장 좋은 장소를, after_create 콜백입니다.

은 단순히 UsersController에

def assign_writer_role 
    @user = User.find(params[:id]) 
    @user.add_role "writer" 
    redirect_to @user 
end 

def remove_writer_role 
    @user = User.find(params[:id]) 
    @user.remove_role "writer" 
    redirect_to @user 
end 

그게 전부 두 가지 작업을 추가 할 수 있습니다.

이 정보가 도움이 되었기를 바랍니다.