2010-11-07 14 views
3

J'utilise Devise comme mécanisme d'authentification pour mon application.
Je veux ajouter des informations supplémentaires à mon modèle d'utilisateur, comme les statistiques de l'utilisateur, image de profil, et d'autres informations pertinentes sur l'utilisateur.Comment réaliser ceci?
Même après avoir créé "rails g imagine: views" il ne crée que les vues que je peux personnaliser il ne me donne pas de ses contrôleurs à éditer.Comment créer des contrôleurs et des vues pour afficher le profil d'un utilisateur avec Devise gem comme mécanisme d'authentification?

Sinon, est-ce que je peux éditer la gemme elle-même pour répondre à mes besoins?
Je n'ai jamais essayé de personnaliser un GEM. Des liens pour commencer à personnaliser une gemme existante?

Répondre

4

Devise elle-même est un moteur Rails et vous pouvez remplacer n'importe laquelle de ses fonctionnalités en créant une copie du fichier que vous souhaitez modifier dans votre répertoire local. Lorsque Rails commence à rechercher un contrôleur approprié pour une requête, il vérifie d'abord l'application locale, puis le fournisseur/les gemmes, puis les gemmes chargées elles-mêmes.

Dans le cas de génie, ils mentionnent que la modification des contrôleurs doivent être effectués de cette manière:

contrôleurs Configuration

Si la personnalisation au niveau des points de vue ne suffit pas, vous pouvez personnaliser chaque contrôleur en suivant ces étapes:

1) Créez votre contrôleur personnalisé, pour exemple a Admins :: SessionsController:

class Admins::SessionsController < Devise::SessionsController 
end 

2) Dites au routeur d'utiliser ce contrôleur:

devise_for :admins, :controllers => { :sessions => "admins/sessions" } 

3) Et puisque nous avons changé le contrôleur, il ne sera pas utiliser le « DEVISE/sessions » vues, donc pensez à copier " concevoir/sessions "à" admin/sessions ". N'oubliez pas que Devise utilise des messages flash pour indiquer aux utilisateurs si la connexion a réussi ou échoué. Devise attend de votre application qu'elle appelle "flash [: notice]" et "flash [: alert]" selon le cas.

Voici la source de la citation: https://github.com/plataformatec/devise