以下是我的设置
我使用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和用户
谢谢。
答案 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。