Во-первых, я интенсивно искал Google и Yahoo, и я нашел несколько ответов на такие темы, как мои, но все они не покрывают то, что мне нужно знать.
У меня есть несколько моделей пользователей в моем приложении, теперь это клиенты, дизайнеры, розничные продавцы, и кажется, что еще впереди. Все они имеют разные данные, хранящиеся в их таблицах, и несколько областей на сайте, которым им разрешено или нет. Поэтому я решил пойти на разработку + CanCan и попробовать свою удачу в полиморфных ассоциациях, поэтому я получил следующие настройки:
class User < AR
belongs_to :loginable, :polymorphic => true
end
class Customer < AR
has_one :user, :as => :loginable
end
class Designer < AR
has_one :user, :as => :loginable
end
class Retailer < AR
has_one :user, :as => :loginable
end
Для регистрации у меня есть настроенные представления для каждого другого типа пользователя, и мои маршруты настроены следующим образом:
devise_for :customers, :class_name => 'User'
devise_for :designers, :class_name => 'User'
devise_for :retailers, :class_name => 'User'
В настоящее время контроллер регистрации остается стандартным (это "разработка/регистрация" ), но я подумал, что, поскольку у меня есть разные данные для хранения в разных моделях, мне тоже придется настраивать это поведение!?
Но с этой настройкой я получил помощников, таких как customer_signed_in?
и designer_signed_in?
, но мне действительно нужен общий помощник, например user_signed_in?
для областей на сайте, доступных для всех пользователей, независимо от того, тип пользователя.
Мне также нужен помощник маршрутов, например new_user_session_path
, а не несколько new_*type*_session_path
и так далее. На самом деле все, что мне нужно, - это процесс регистрации...
Так что мне было интересно, ЕСЛИ ЭТО ПУТЬ ИДЕТ ДЛЯ этой проблемы??? Или есть лучшее/более легкое/менее необходимое решение для этого?
Спасибо заранее,
Роберт