将此视为挑战而非其一般方法。我提到这一点的原因是,通常首选将管理员可访问的功能合并到public facing site中。这就是所需要的:
/admin
。管理员只能从此路线登录。/users/sign_up
。谢谢, 麦克
答案 0 :(得分:0)
以下似乎我在正确的方向上取得了一些进展;这至少为用户和管理员提供了相同的开箱即用的设计功能,具有自定义路由,
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
想法?
警告:在此示例中,我在管理模型 中包含了:registerable devise模块,用于在开发期间进行测试。最终将删除sign_up
路线。
许多搜索产生了(请注意双关语)似乎表明覆盖设备控制器的following blog post需要重新映射其所有指定的“HTTP动词”;这是有道理的,因为未映射的将由默认设计控制器处理。
如果有人有更多使用多种设计模型和分离管理方法的经验,我会对您的想法和建议非常感兴趣!