Несколько моделей пользователей с Ruby на рельсах и разработке, чтобы иметь отдельные регистрационные маршруты, но один общий путь входа в систему

Во-первых, я искал, что я искал Google и Yahoo, и я нашел несколько ответов на темы, как мои, но они все не охватывают то, что я нужно знать.

У меня есть несколько пользовательских моделей в моем приложении, пока это клиенты, дизайнеры, розничные продавцы, и похоже, что есть еще больше, чтобы прийти. Все они имеют разные данные, хранящиеся в своих таблицах, и несколько областей на сайте, им разрешено или нет. Поэтому я полагал, чтобы пойти на разработку + канкан, и попробовать повезло с полиморфными ассоциациями, поэтому я получил следующие моды, установленные:

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 и так далее. На самом деле все, что мне нужно быть другим - это процесс регистрации ...

Итак, мне было интересно, если это путь к этой проблеме ??? Или есть ли лучший / проще / меньше необходимо настроить решение для этого ???

заранее спасибо,
Robert

34
задан eNN 3 July 2014 в 02:56
поделиться