我的后控制器代码如下。我想要做的是用户应该能够删除他自己的帖子,而 admin_user 可以删除任何帖子。以下代码使admin_user可以删除帖子,但是对于普通用户,当尝试删除自己的帖子时,它会重定向到root_path
似乎 do_authentication 无法正常工作,普通用户正在尝试以管理员身份而不是“correct_user”身份进行身份验证
有什么问题?
谢谢!
class PostsController < ApplicationController
before_filter :signed_in_user, only: [:index, :create, :destroy]
before_filter :do_authentication, only: :destroy
.
.
.
def destroy
@post.destroy
flash[:success] = "Post deleted!"
redirect_back_or user_path(current_user)
end
private
def do_authentication
correct_user || admin_user
end
def correct_user
@post = current_user.posts.find_by_id(params[:id])
redirect_to user_path(current_user) if @post.nil?
end
def admin_user
@post = Post.find_by_id(params[:id])
redirect_to(root_path) unless current_user.admin?
end