В моем приложении
- "обычные" пользователи: те, которые заходят на обычную страницу регистрации
- пользователей Facebook (FB): те, которые приходят с Facebook, подключаются
- "FB-normal" пользователи: пользователь, который может войти с электронной почтой или паролем * FB connect
Кроме того, существует множество других методов входа в систему openID (я не думаю, что сам openID будет приемлем, поскольку он не связывает учетные записи и не позволяет сторонним функциям (публикация в твиттере, добавление ФБ пост и тд и тп))
Итак, как мне смоделировать это?
Прямо сейчас у нас есть класс User с #facebook_user? определены - но это становится беспорядочным с "нормальными" пользователями FB - плюс все проверки становятся очень хитрыми и трудными для интерпретации. Также есть такие методы, как #deliver_password_reset! которые не имеют смысла в контексте только для пользователей Facebook. (это хромает)
Я продумал STI (пользователь :: Facebook, пользователь :: нормальный, пользователь :: FBNormal и т. Д.). Это делает проверки супер гладкими, но не масштабируется для других типов соединений. и все перестановки между ними ... User :: FacebookLinkedInNormal (wtf?) Делать это с кучей модулей, я думаю, было бы много.
Есть еще идеи?