2015-09-16 1 views
1

Maintenant, dans mon application rails, j'utilise une authentification simple (email, mot de passe) et donne compte role pour définir ce que le compte peut faire.Rails comment implémenter le rôle et définir le pouvoir du rôle?

def login 
    email = params[:email] 
    @account = Account.find_by_email(email) 
    if @account && @account.authenticate(params[:password]) 
     session[:user_id] = @account.id 
     redirect_to books_path 
    else 
     render :login 
    end 
    end 

def current_user 
    @current_user ||= Account.find(session[:user_id]) if session[:user_id] 
end 

par exemple: deux gestionnaire de rôles (de role_id: 1) et l'utilisateur (role_id: 2 ... N) dans le contrôleur, j'utilise façon bête pour ensemble de données pour chaque rôle comme:

chaque livre a ACCOUNT_ID

def index 
    @books = Book.where("account_id = ?,@current_user.id) 
    @books = Book.all if @current_user.role_id == 1 
end 

il semble si fou, et j'essayé d'utiliser cancancan à cette résolu, mais comme je sais, cancancan juste peut définir pour Restful méthode, et peut distinguer l'autorité de rôle comme le gestionnaire peut faire tout et la méthode peut faire montrer ... ne cancancan peut faire un certain nombre de résoudre quel rôle peut voir quelles données ils possèdent? utiliser cancancan ou d'une autre manière de résoudre? s'il vous plaît donnez-moi quelques conseils! Merci.

+0

ma réponse pourrait vous aide? – rob

Répondre

3

vous pouvez utiliser l'aide cancancan :can? pour cette

par exemple

définir vos abiliies pour chaque rôle

can :read, Book 

de contrôle maintenant cancancan si votre utilisateur avec le rôle spécifique peut lire le livre entrées

ou vous le cochez (sur d'autres pages) avec:

<% if can? :create, Book %> 
    ..... 
<% end %> 

vous pouvez également définir vos propres capacités voient le wiki pour une aide détaillée