Mon application a
- utilisateurs "normaux" : ceux qui passent par une page d'inscription typique
- utilisateurs de facebook(FB) : ceux qui proviennent de Facebook connect
- Utilisateurs "FB-normal" : un utilisateur qui peut se connecter à la fois avec son email/mot de passe * FB connect
En outre, il existe une multitude d'autres méthodes de connexion de type openID (je ne pense pas que l'openID lui-même soit acceptable puisqu'il ne relie pas les comptes et ne permet pas les fonctionnalités spécifiques aux tiers (publication sur Twitter, ajout d'un post FB, etc.))
Alors, comment je modélise ça ?
Actuellement, nous avons la classe User avec #facebook_user ? défini - mais cela devient compliqué avec les utilisateurs "normaux" de FB - et toutes les validations deviennent très délicates et difficiles à interpréter. De plus, il y a des méthodes comme #deliver_password_reset ! qui n'ont aucun sens dans le contexte des utilisateurs de Facebook uniquement. (c'est nul)
J'ai pensé à STI (User::Facebook, User::Normal, User::FBNormal, etc.) Cela rend les validations super astucieux, mais il ne s'adapte pas aux autres types de connexion, ni à toutes les permutations entre eux... User::FacebookLinkedInNormal(wtf ?) Faire ça avec un tas de modules, je pense que ça craindrait beaucoup.
D'autres idées ?