ポストコントローラーの私のコードは次のとおりです。私がやろうとしているのは、ユーザーが自分の投稿を削除できるようにし、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