我有一个应用程序需要三种用户类型(用户、代理、管理员)并登录并需要不同的设计模块。
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 。我已经配置了,并为这两个命名空间如下。AdminUserAgentAdminauthentication_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. 如果我config.default_namespace = :agent在 active_admin.rb 配置文件中设置,agent_admin则会生成登录路径,但不会admin_users.
所有其他 ActiveAdmin 路径通常为这两个名称空间生成。
我该如何解决,生成login由 处理的两个路径activedmin?