我有一个应用程序需要三种用户类型(用户、代理、管理员)并登录并需要不同的设计模块。
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
此外,这些用户可能具有基于其类型的附加列。所以,我想根据它们的类型创建不同的表。
根据我的要求,我决定使用不同的命名空间(admin for AgentAdmin
,agent for )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 路径通常为这两个名称空间生成。
我该如何解决,生成login
由 处理的两个路径activedmin
?