使用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处理AgentAdmin
和AdminUser
(管理员为AgentAdmin
,代理为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
生成登录路径。 如果我在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)
这解决了这个问题。
- 如何在ActiveAdmin视图中使用控制器中定义的实例变量?
- 计算Active Admin仪表板(Rails,Active admin 1.0,Postgresql数据库,postgres_ext gem)中序列化属性(数组)中值的出现次数
- Active Admin身份validation与用户身份validation冲突
- rails 3.1:如何重写inherited_resources并允许rails scaffolding再次正常工作?
- activeadmin:为嵌套资源添加删除
- ActiveAdmin添加filter以形成
- ActiveAdmin不保存has_many嵌套对象
- Active Admin中的自定义表单
- 将根页面设置为activeAdmin默认登录页面