使用ActiveAdmin处理多个管理类型登录

我有一个应用程序需要三个用户类型(用户,代理,管理员)登录并需要不同的设计模块。

User AgentAdmin AdminUser confirmable Yes Yes No lockable Yes Yes No timeoutable No Yes Yes Omniauthable Yes No No database_authenticatable Yes Yes Yes recoverable Yes Yes No rememberable Yes Yes No trackable Yes Yes Yes validatable Yes Yes Yes 

此外,这些用户可以根据其类型添加其他列。 所以,我想根据它们的类型创建不同的表。

根据我的要求,我决定使用具有不同命名空间的ActiveAdmin处理AgentAdminAdminUser (管理员为AgentAdmin ,代理为AgentAdmin )。 我已为这两个命名空间配置了authentication_methodcurrent_user_methodlogout_link_path ,如下所示。

 config.load_paths = [File.join(Rails.root,'app','admin'), File.join(Rails.root,'app','agent')] config.namespace :admin 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 :agent do |agent| agent.authentication_method = :authenticate_agent_admin! agent.current_user_method = :current_agent_admin agent.logout_link_path = :destroy_agent_admin_session_path end 

我的routes.rb有以下代码:

 devise_for :agent_admins, ActiveAdmin::Devise.config devise_for :admin_users, ActiveAdmin::Devise.config ActiveAdmin.routes(self) 

这仅为admin_users生成登录路径。 如果我在active_admin.rb配置文件中设置config.default_namespace = :agent ,则会生成agent_admin的登录路径,但不会生成admin_users

所有其他ActiveAdmin路径都是为两个命名空间正常生成的。

如何解决,生成activedmin处理的login路径?

 devise_for :agent_admins, ActiveAdmin::Devise.config.merge({path: '/agent'}) devise_for :admin_users, ActiveAdmin::Devise.config ActiveAdmin.routes(self) 

这解决了这个问题。