Использование Devise для двух разных моделей, но одна и та же форма входа - PullRequest
9 голосов
/ 25 марта 2011

Я видел много подобных вопросов здесь, но ничего, что вполне соответствует моим потребностям.

Я довольно опытный разработчик rails, но этот новый проект я впервые использую как Rails 3, так и Devise (обычно я использую authlogic).

В моем приложении есть две разные модели, которые я хочу аутентифицировать с помощью устройства.

One, пользователь - просто модель стандартного пользователя Во-вторых, Business похож на пользователя (в нем также есть адрес электронной почты), но в базе данных есть дополнительная информация (адрес, номер телефона и т. Д.)

Я хочу иметь возможность войти в систему обоих через одну и ту же форму входа. Тогда, очевидно, после входа в систему им будет представлена ​​различная информация в зависимости от того, какой тип Модели вошел в систему.

Может быть, а может и не иметь значения, что я планировал использовать OmniAuth, чтобы разрешить пользователям (хотя, вероятно, не предприятиям) регистрироваться / регистрироваться через facebook.

Спасибо!

Какой самый простой способ сделать это?

Ответы [ 2 ]

5 голосов
/ 26 марта 2011

Я думаю, что единственным способом справиться с этим было бы иметь свой собственный пользовательский знак в форме и контроллер, который определял тип пользователя, а затем входить в него правильно.Я бы порекомендовал подход, подобный тому, который отмечен для простоты (посмотрите на что-то вроде CanCan для управления ролями).

Другая потенциальная проблема с несколькими пользовательскими моделями заключается в том, что у вас будет несколько версий всех вспомогательных методов devise.Таким образом, для current_<resource> и <resource>_signed_in? у вас будет current_user, current_business_user, user_signed_in? и business_user_signed_in?.Тогда вам придется либо реализовать свои собственные версии этих методов, либо проверять обе версии везде, где вы их использовали.

2 голосов
/ 22 ноября 2011

Может ли это сделать в application_controller?

current_user = current_resource_a || current_resource_b

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...