如何将Devise和ActiveAdmin用于相同的用户模型?

我有ActiveAdmin和Devise与用户合作。 我想使用Devise登录具有相同用户模型的常规非管理员用户。 我怎样才能做到这一点? (我想在User模型中只为管理员设置一个admin标志。)我尝试将第二行添加到routes.rb

 devise_for :users, ActiveAdmin::Devise.config devise_for :users 

但是当我试图列出路线时,它给出了一个错误

 >rake routes DL is deprecated, please use Fiddle rake aborted! ArgumentError: Invalid route name, already in use: 'new_user_session' You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here: http://guides.rubyonrails.org/routing.html#restricting-the-routes-created 

我已经创建了一个授权适配器,它只检查user.admin == true ,这对ActiveAdmin工作正常。 https://github.com/activeadmin/activeadmin/blob/master/docs/13-authorization-adapter.md

我发现了这个http://dan.doezema.com/2012/02/how-to-implement-a-single-user-model-with-rails-activeadmin-and-devise/

但我最终这样做了

设计3.4.1
ActiveAdmin 1.0.0.pre1
Rails 4.2.1

routes.rb

  devise_for :admin_users, {class_name: 'User'}.merge(ActiveAdmin::Devise.config) ActiveAdmin.routes(self) devise_for :users resources :users 

application_controller.rb

  def access_denied(exception) redirect_to root_path, alert: exception.message end 

config/initializers/active_admin.rb

 config.authorization_adapter = ActiveAdminAdapter config.on_unauthorized_access = :access_denied 

(并将所有方法从_useradmin_user 。)

app/models/active_admin_adapter.rb

 class ActiveAdminAdapter < ActiveAdmin::AuthorizationAdapter def authorized?(action, subject = nil) user.admin == true end end 

 rails generate migration add_admin_to_users admin:boolean