我有一个应用程序需要三种用户类型(用户、代理、管理员)并登录并需要不同的设计模块。
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
此外,这些用户可能具有基于其类型的附加列。所以,我想根据它们的类型创建不同的表。
根据我的要求,我决定处理
AgentAdmin和
AdminUser与
ActiveAdmin具有不同的命名空间(
AdminUser 的管理员,
AgentAdmin 的代理)。我已经配置了
authentication_method ,
current_user_method和
logout_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 生成登录路径.
如果我设置
config.default_namespace = :agent在active_admin.rb 配置文件中,
agent_admin 的登录路径已生成,但未生成
admin_users .
所有其他 ActiveAdmin 路径通常为这两个 namespace 生成。
我该如何解决,同时生成
login
activedmin 处理的路径?
请您参考如下方法:
devise_for :agent_admins, ActiveAdmin::Devise.config.merge({path: '/agent'})
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
这解决了这个问题。


