如何为Active Admin命名空间设置两个设计身份验证模型/路由

时间:2014-10-24 10:10:45

标签: ruby-on-rails devise activeadmin

我有一个ActiveAdmin实例,以前只为我的公司用户提供Admin。我们需要客户来管理其他一些模型。在activeadmin部分,它看起来很简单。我刚刚创建了一个单独的命名空间,它起作用当我尝试创建两个不同的登录端点时,事情变得复杂。

这是我的routes.rb文件:

scope '/admin' do
  devise_for :admin_users, ActiveAdmin::Devise.config
  devise_for :client_admins, ActiveAdmin::Devise.config

  ActiveAdmin.routes(self)
end

问题是:activeadmin使用默认命名空间(admin_users的命名空间)来生成路由。有没有办法在没有覆盖并为client_admins编写自己的auth控制器的情况下执行此操作?

2 个答案:

答案 0 :(得分:3)

这是可能的。

的routes.rb

Rails.application.routes.draw do
  devise_for :admin_users, ActiveAdmin::Devise.config
  devise_for :teachers, ActiveAdmin::Devise.config.merge(:path => :admin)
  ActiveAdmin.routes(self)

  root 'application#root'
end

配置/初始化/ active_admin.rb

ActiveAdmin.setup do |config|
  config.site_title = "Admin"
  config.default_namespace = :superadmin
  config.namespace :superadmin 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 :admin do |admin|
    admin.authentication_method = :authenticate_teacher!
    admin.current_user_method = :current_teacher
    admin.logout_link_path = :destroy_teacher_session_path
    admin.root_to = 'dashboard#index'
  end
end

Rails 5.0.0.1,Devise 4.2.0,ActiveAdmin 1.0.0.pre4

答案 1 :(得分:1)