У меня есть сайт с Restful-аутентификацией в качестве плагина аутентификации. Мне нужно интегрировать Facebook Connect. Facebook не предоставляет адрес электронной почты для пользователя (возможно, только если пользователь согласен, если), и, конечно, не предоставляет пароль.
Основная проблема заключается в том, что модель User имеет много validates_**
в этих 2 полях (из модулей проверки подлинности Restful).
Другая небольшая проблема заключается в том, что у нас уже есть много кода (наблюдатели отправляют электронные письма после создания пользователя и т. Д. И т. Д.), Который зависит от адреса электронной почты.
Решение, представленное в руководствах facebook_connect, состояло в том, чтобы сохранить модель пользователя, минуя проверки, но это слишком неправильно ..
Как бы вы изменили дизайн пользовательской модели до , включив любой / оба метода аутентификации (стандартный и / или facebook_connect)?
Выполнить рефакторинг всех проверок (с помощью: instance =>: is_facebook_user), наложить условия на наблюдателей и т. Д.
Реализация STI на пользовательской таблице (и иметь StandardUser / FacebookUser, каждый с настраиваемыми модулями аутентификации)
Таблица пользователей с полиморфной ссылкой на standard_user и facebook_user
Другая идея
Обратите внимание, что также требуется функциональность для привязки «стандартной» учетной записи к учетной записи «facebook», что усложняет ситуацию.
Ссылки:
http://crazyviraj.blogspot.com/2010/01/test-cases-for-basic-facebook-connect.html
http://blog.yangtheman.com/2009/08/23/how-to-integrate-facebook-connect-with-a-rails-app/comment-page-1/