0
出于某种原因,我以管理员身份登录后,我被重定向到用户注册页面。如果我以普通用户身份登录,则可以获得管理员拥有的权限,例如创建和删除帖子的权限。为什么我的应用程序要求我在以管理员身份登录后以用户身份登录?
route.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
devise_for :admins, path: 'admins'
root 'home#index'
get '/' => "courses#index", as: :user_root
resources :courses, :lessons
end
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :authenticate_user!
private
def after_sign_in_path_for(resource)
courses_path
end
def after_sign_out_path_for(resource)
root_path
end
end
show.html.erb
<div class="panel panel-default">
<div class="panel-heading"><h2><%= @lesson.title %></h2></div>
<div class="panel-body"><%= @lesson.content %></div>
</div>
</p>
<% if admin_signed_in? %>
<%= link_to "delete lesson", lesson_path(@lesson), method: :delete, data: { confirm: 'Are you sure?' } %>
<%= link_to "edit lesson", edit_lesson_path %>
<% end %>
<br>
<br>
<%= link_to "<<back to lesson", course_path(@lesson.course_id)%>
这可能会造成这个问题的任何其他文件?
似乎是一个'Admin'和'User'是不同的车型在您的应用程序。因此'authenticate_user'需要用户登录而不是管理员。你有没有考虑将管理员建模为普通用户,但是使用'admin = true'标志? – spickermann
@spickermann我选择了使用devise创建多个模型的方式,而不是创建一个User模型并拥有一个admin属性。所以我假设你说before_action:authenticate_user!部分代码应该改成别的东西? – Robert