2010-04-07 4 views
5

Quel est le format/la structure type de création d'une zone administrative dans une application Rails?Construction des zones d'administration dans les rails - Questions générales

Plus précisément, je suis perplexe dans les environs de ces sujets:

  • Comment réagissez-vous à des situations où les ressources d'un modèle sont disponibles à la fois le public et l'administrateur? C'est-à-dire un modèle d'utilisateur où n'importe qui peut créer des utilisateurs, se connecter, etc. mais seul l'administrateur peut voir les utilisateurs, les supprimer/les mettre à jour, etc.
  • Quelle est la convention appropriée pour le routage?
  • Comment structurer les contrôleurs?
  • Les contrôleurs en double sont-ils considérés comme corrects? c'est-à-dire une version d'administration et la version non-administrateur?

Merci!

Répondre

4

Vous pouvez avoir 2 contrôleurs, une pour la partie publique et d'autres pour l'administration et l'utilisation admin espaces de noms:

map.namespace(:admin, :path_prefix => 'settings', :name_prefix => 'admin_') do |admin| 
    admin.resources :users 
end 

Il tracerait à /paramètres/utilisateurs et le contrôleur devrait être préfixé par Admin:: comme Admin::UsersController, également le fichier du contrôleur doit être mis dans un dossier admin sous le application/contrôleurs dir.

  • Oui, si elles rendent votre code plus clair, serait un gros gâchis si par exemple vous aviez le même contrôleur pour admin et opinions du public, qui doivent ensuite rendre différents modèles de vue basé sur si un utilisateur administrateur ou normal les accède. Egalement see here for more information.
+0

Damien, merci d'avoir répondu. Question sur le routage RE du second point. Comment cela affecte-t-il votre utilisation des générateurs de contrôleur? ET Échafaudez-vous du tout? –

+1

Vous pouvez également définir la génération du contrôleur ... 'script/generate controller admin/users'. –

0

En plus de mettre en place un espace de noms admin dans mes voies, j'utiliser le plug-in declarative_authorization, ce qui vous permet de définir des rôles pour les utilisateurs et définir des contrôles d'accès sur les actions du contrôleur ainsi que les attributs des modèles. Si un utilisateur tente d'accéder à une action pour laquelle il n'a pas l'autorisation, le plugin redirigera sa requête. Vraiment soigné façon de le gérer et contribue à fournir un niveau de sécurité granulaire.

Plusieurs autres plugins de l'écosystème Rails offrent des fonctionnalités similaires.

2

Une série de Railscasts montre une approche qui évite d'avoir une zone d'administration distincte en utilisant des conditions dans les vues et les contrôleurs: Where Administration Goes.

Cela peut ne pas convenir à votre cas d'utilisation, mais cela vaut le coup d'œil.

Questions connexes