2 votes

Meilleure pratique pour les mises en page doubles dans Rails 3

J'ai une application rails 3 qui a deux mises en page distinctes. L'une est destinée aux utilisateurs finaux, et l'autre est une console d'administration pour gérer l'application.

C'est généralement très facile à gérer puisque je peux définir un contrôleur pour utiliser une seule mise en page. Cela fonctionne très bien pour la plupart des paramètres puisqu'ils n'impliquent pas l'utilisateur final. Mais certains de mes modèles le feront. Par exemple, un administrateur qui modifie un profil d'utilisateur par rapport à un utilisateur. Pour que cela fonctionne, dois-je avoir des contrôleurs en double pour un modèle ? Un pour la console d'administration et un pour les utilisateurs ? J'ai l'impression d'avoir jeté DRY par la fenêtre.

Merci d'avance pour tout commentaire.

1voto

Alex Peachey Points 4466

Il me semble qu'un administrateur peut faire des choses différentes avec un utilisateur qu'un utilisateur final, de sorte que des contrôleurs différents ne sont pas nécessairement complètement différents.

Toutefois, s'ils sont complètement identiques et que vous souhaitez simplement avoir une mise en page différente, vous pouvez simplement définir votre mise en page en fonction de l'utilisateur actuel. Quelque chose comme ceci pourrait fonctionner :

layout :determine_layout

def determine_layout
  return 'admin' if current_user && current_user.admin?
  'application'
end

1voto

Paulo Fidalgo Points 5207

Vous n'avez pas besoin de dupliquer votre code. Il suffit d'ajouter une couche d'autorisation à votre application et vous pouvez créer ces fonctionnalités dans votre code existant. Pour ce faire, je vous recommande la gemme CanCan :

CanCan est une bibliothèque d'autorisation pour Ruby on Rails qui restreint l'accès à les ressources auxquelles un utilisateur donné est autorisé à accéder. Toutes les permissions sont définies dans un seul endroit (la classe Ability) et ne sont pas dupliquées dans les contrôleurs, les vues et les requêtes de base de données.

Vous pouvez en savoir plus et consulter les exemples sur le site Web de la Commission européenne. page du projet et il y a aussi un Railscast .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X