ActiveAdmin admin_users表设计有问题的用户表登录

时间:2018-09-13 08:15:34

标签: devise activeadmin ruby-on-rails-5.2

以下是我的设置

  • 设计(4.4.3)
  • activeadmin(1.3.0)
  • Rails 5.2

我使用devise创建了一个用户表。安装活动admin并使用常规方法并创建admin_users表。不,我不使用同一张桌子。这些是不同的表(上次将此问题标记为重复的原因是我不得不这样做,因为用户认为我使用了同一张表)

路由文件如下:

devise_for :users
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)

devise_scope :user do
 authenticated :user do
  root 'home#dashboard', as: :authenticated_root
 end

 unauthenticated do
  root 'devise/sessions#new', as: :unauthenticated_root
 end
end

现在问题是root_path'/'正确重定向,我能够以用户身份登录。但是我无法以管理员身份登录。它将我重定向回未经身份验证的用户root_path。

但是奇怪的是,当我以用户身份登录时,然后可以以admin_user身份登录。

再次使用不同的表,admin_users和用户

谢谢。

2 个答案:

答案 0 :(得分:1)

我可以告诉您一种在设计中添加管理员的简单方法

$rails g migration add_admin_to_user

在数据库中

 def change
    add_column :users, :admin , :boolean , {default: false}
  end

在user.rb

  def admin?
    admin
  end

<% if current_user && current_user.admin? %>
<% end %>

然后我从我想成为管理员的电子邮件中进行注册

然后在rails c中选择您希望其成为管理员的电子邮件

User.last
user=User.last
user.admin=true
user
user.save

答案 1 :(得分:0)

解决了这个问题。

因此,问题是当您具有由devise创建的activeadmin admin_users和users表时,您放置了authenticated_user!在application_controller中的before_action中,activeadmin会将其解释为授权失败(尽管情况并非如此)。

解决方法是,转到active_admin.rb并添加以下代码

config.skip_before_action :authenticate_user!

这会强制activeadmin仅监听其authrization_adapter。