Habituellement lorsque vous travaillez avec Devise vous aurez des utilisateurs. Dans ce cas, Devise est très simple d’utilisation: 1 ligne de commande et vous êtes prêt.
Mais lorsque vous désirez travailler avec plusieurs models tell qu’un model User
et un model Admin
alors Devise se révèle plus compliqué.
Il y a des personnes qui préfèrerons ne pas créer les deux models et plutôt utiliser des techniques telle que les Concern (en) ou autres.
Personnellement je désire avoir 2 models.
Il y a du nouveau
Depuis le 13 Aout 2014 un nouveau helper a été ajouté dans Devise:
1
2
3
4
5
3.3.0 - 2014-08-13
- enhancements
...
- Adds devise_group, a macro to define controller helpers for multiple mappings at once. (by @dropletzz)
...
Dropletzz a implémentés une méthode dite “helper” qui vous permet de définir un group de “mappings” qui va générer des méthodes comme expliqué dans la documentation.
Comment utilisé devise_group
Dans mon cas j’en ai besoin partout dans mon application donc j’ai ajouté le code suivant dans mon ApplicationController
:
1
2
3
4
5
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
devise_group :person, contains: [:user, :admin]
before_action :authenticate_person! # Ensure someone is logged in
end
Maintenant je peux utiliser current_person
partout dans mon application où le code est commun aux classes User
et Admin
.
Les méthodes current_user
et current_admin
sont toujours disponible ce qui est cool.
Merci
Je tiens a remercier Dropletzz :) ainsi que vous qui lisez cet article.