Как создать отдельного администратора (пространства имен или области действия) с двумя моделями устройств (User & Admin) в Rails 3? - PullRequest
0 голосов
/ 13 мая 2011

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

  • Разработка модели для пользователей, посещающих общедоступный сайт
  • Разработка модели для администраторов
  • Пространство имен или область действия области администратора до/admin.Администраторы могут войти только по этому маршруту.
  • Пользователи могут зарегистрироваться непосредственно с общедоступной страницы сайта Landing ;они не обязаны посещать /users/sign_up согласно маршруту, сгенерированному по умолчанию для устройства.
  • Рассмотрим возможность переопределения контроллеров устройства по умолчанию

Спасибо, Майк.

1 Ответ

0 голосов
/ 13 мая 2011

Похоже, что я добился определенного прогресса в правильном направлении; это, по крайней мере, обеспечивает идентичные готовые функциональные возможности для пользователей и администраторов с настраиваемой маршрутизацией

  match 'admin', :controller => 'admin'

  namespace :admin do
    # to be updated later... 
  end

  devise_for :users
  #devise_for :admins, :path => "admin"  # this works but uses the default
                                         # Devise::SessionController
  devise_for :admins, 
    :controllers => { 
      :sessions => "admin/sessions", 
      :passwords => "admin/passwords",
      :registrations => "admin/registrations" }, :path => "admin",
    :skip => [:sessions, :passwords, :registrations] do
    get 'admin/sign_in' => 'admin/sessions#new', :as => :new_admin_session
    post 'admin/sign_in' => 'admin/sessions#create', :as => :admin_session
    get 'admin/sign_out' => 'admin/sessions#destroy', :as => :destroy_admin_session

    get 'admin/sign_up' => 'admin/registrations#new', :as => :new_admin_registration
    get 'admin/account' => 'admin/registrations#edit', :as => :edit_admin_registration
    post 'admin/account' => 'admin/registrations#create', :as => :admin_registration
    get 'admin/cancel' => 'admin/registrations#cancel', :as => :cancel_admin_registration
    put 'admin/account' => 'admin/registrations#update'
    delete 'admin/account' => 'admin/registrations#destroy'

    post 'admin/password' => 'admin/passwords#create', :as => :admin_password
    get 'admin/password/new' => 'admin/passwords#new', :as => :new_admin_password
    get 'admin/password/edit' => 'admin/passwords#edit', :as => :edit_admin_password    
    put 'admin/password' => 'admin/passwords#update'
  end

Идеи? * * 1004

предостережение : в этом примере я включил: registerable devise module в модель Admin просто для тестирования во время разработки. В конечном итоге маршрут sign_up будет удален.

Большая часть поиска дала (следите за каламбуром) следующую запись в блоге , которая, по-видимому, указывает на переопределение контроллера устройства, требует повторного отображения всех его указанных «HTTP-глаголов», как это было бы; это имеет смысл, поскольку несопоставленные объекты будут обрабатываться контроллером устройства по умолчанию.

Если у кого-то будет больше опыта работы с несколькими моделями устройств и подходом раздельного администрирования, меня очень заинтересуют ваши мысли и предложения!

...