J'utilise rails 3.2 et devise 2.0 et je suis assez novice en matière de Rails.
Exigences
J'aimerais réaliser ce qui suit :
- avoir 2 ou plusieurs modèles "utilisateur", par exemple Membre, Client, Admin
- tous les modèles partagent certains champs obligatoires (par exemple, l'email et le mot de passe)
- Chaque modèle peut avoir des champs uniques (par exemple, la société pour le client uniquement).
- certains champs peuvent être partagés mais ne pas avoir la même validation (par exemple, le nom est obligatoire pour le client mais facultatif pour le membre).
- tous les champs doivent être remplis lors de la procédure d'inscription, les formulaires sont donc différents
- le formulaire de connexion doit être unique
Solutions possibles
J'ai cherché sur Google et StackOverflow pendant un bon moment, mais rien ne me semble correct (je suis un gars de Java, désolé :) et maintenant je suis assez confus. Deux solutions sont apparues :
Utilisateur d'un seul appareil
C'est la réponse la plus fréquente. Il suffit de créer le devise User par défaut et de créer des relations entre Member-->User et Customer-->User. Ce qui me préoccupe ici, c'est de savoir comment réaliser un processus d'enregistrement personnalisé pour chaque modèle ? J'ai essayé différentes choses mais tout s'est terminé en désordre !
Utilisateurs de plusieurs appareils
Cela résout le problème du processus d'enregistrement personnalisé et me semble correct, mais le formulaire de connexion unique est un obstacle. J'ai trouvé une réponse sur SO ( Devise - connexion à partir de deux modèles ) qui suggère de surcharger Devise::Models::Authenticatable.find_for_authentication(conditions). Cela semble compliqué ( ?) et comme je suis nouveau sur rails, j'aimerais savoir si cela peut fonctionner ?
Merci pour vos conseils !