2010-04-06 9 views
0

Donc, ma question est de savoir comment implémenteriez-vous vos assistants manuscrits en fonction du rôle utilisateur actuel.Implémentation des assistants basés sur les rôles

Serait-ce efficace pour changer le comportement au moment de la demande? par exemple. l'assistant en quelque sorte figure le rôle de l'utilisateur, et inclure le sous-module approprié?

module ApplicationHelper 
    module LoggedInHelper 
     # Some functions 
    end 

    module GuestHelper 
     # The Same functions 
    end 

    # If User is Guest then include GuestHelper 
    # If User is LoggedIn then include LoggedInHelper 

end 

Est-ce efficace de cette façon? est-ce rails façon? J'ai tout un tas de fonctions qui agissent comme ça, et je ne veux pas envelopper chacun d'eux unique dans une instruction if

def menu_actions 
    if current_user.nil? 
     # User is guest 
     { "Log in" => link_to "Login", "/login" } 
    else 
     # User is Logged In 
     { "Log out" => link_to "Logout", "/logout" } 
    end 
end 

Merci pour votre temps et les pensées.

Répondre

0

Je ne crois pas que cela fonctionnerait très bien du tout. En mode dev, il se comporterait probablement, mais en production le code ne serait pas chargé à partir de zéro avec chaque requête. Cela signifie que la première requête chargera le bon module, mais après que la prochaine demande pourrait charger un deuxième module et qu'il y aurait alors un conflit.

Je n'ai pas une bonne réponse pour vous sur la façon d'éviter les instructions switch ou if, mais je suspecte qu'un système d'héritage de classe soit le chemin à suivre au lieu de l'inclusion du module.

Questions connexes