Ruby on rails 如何为活动管理员命名空间设计两种身份验证模型/路由

Ruby on rails 如何为活动管理员命名空间设计两种身份验证模型/路由,ruby-on-rails,devise,activeadmin,Ruby On Rails,Devise,Activeadmin,我有一个ActiveAdmin实例,它只为我的公司用户提供管理员服务。后来,我们需要我们的客户来管理其他一些型号。在activeadmin部分,它看起来很简单。我刚刚创建了一个单独的名称空间,它工作了。当我试图创建两个不同的登录端点时,事情变得复杂起来 这是my routes.rb文件: scope '/admin' do devise_for :admin_users, ActiveAdmin::Devise.config devise_for :client_admins, Acti

我有一个ActiveAdmin实例,它只为我的公司用户提供管理员服务。后来,我们需要我们的客户来管理其他一些型号。在activeadmin部分,它看起来很简单。我刚刚创建了一个单独的名称空间,它工作了。当我试图创建两个不同的登录端点时,事情变得复杂起来

这是my routes.rb文件:

scope '/admin' do
  devise_for :admin_users, ActiveAdmin::Devise.config
  devise_for :client_admins, ActiveAdmin::Devise.config

  ActiveAdmin.routes(self)
end

问题是:activeadmin使用默认名称空间(管理员用户的名称空间)生成路由。有没有一种方法可以在不为客户端管理员重写和编写自己的身份验证控制器的情况下执行此操作?

我认为这是不可能的:

我将使用rolify和cancancan创建一个
:admin
:client
角色

这是可能的

routes.rb

Rails.application.routes.draw do
  devise_for :admin_users, ActiveAdmin::Devise.config
  devise_for :teachers, ActiveAdmin::Devise.config.merge(:path => :admin)
  ActiveAdmin.routes(self)

  root 'application#root'
end
config/initializers/active_admin.rb

ActiveAdmin.setup do |config|
  config.site_title = "Admin"
  config.default_namespace = :superadmin
  config.namespace :superadmin do |admin|
    admin.authentication_method = :authenticate_admin_user!
    admin.current_user_method = :current_admin_user
    admin.logout_link_path = :destroy_admin_user_session_path
  end

  config.namespace :admin do |admin|
    admin.authentication_method = :authenticate_teacher!
    admin.current_user_method = :current_teacher
    admin.logout_link_path = :destroy_teacher_session_path
    admin.root_to = 'dashboard#index'
  end
end

Rails 5.0.0.1、Devision 4.2.0、ActiveAdmin 1.0.0.pre4

我认为对于教师的Devision_,ActiveAdmin::Devision.config.merge(:path=>:admin)路径不能是admin,它将类似于path::xyz@cross