2017-03-18 7 views
3

私は自分のユーザーコントローラーに問題があります。現在、管理ユーザーは自分自身を削除することができ、他のユーザーは自分自身を削除することはできません。さらに、各ユーザーは自分自身を編集することができます。管理者ユーザーが他のユーザーを削除および編集することを許可します

しかし、管理者ユーザーが自分自身や他のユーザーを削除したり編集したりしたいと思います。どのように私はユーザーを制御する必要がありますか?

ユーザーコントローラ:助けを

class UsersController < ApplicationController 
    before_action :logged_in_user, only: [:index, :edit, :update, :destroy, 
             :following, :followers] 
    before_action :correct_user, only: [:edit, :update] 
    before_action :admin_user,  only: :destroy 

    def edit 
    @user = User.find(params[:id]) 
    end 

    def destroy 
    User.find(params[:id]).destroy 
    flash[:success] = "Nutzer gelöscht" 
    redirect_to users_url 
    end 


    private 

    def user_params 
    params.require(:user).permit(:name, :capacity, :resource_id, :email, :password, 
           :password_confirmation) 
    end 

    # Before filters 

    # Confirms the correct user. 
    def correct_user 
    @user = User.find(params[:id]) 
    redirect_to(root_url) unless current_user?(@user) 
    end 

    # Confirms an admin user. 
    def admin_user 
    redirect_to(root_url) unless current_user.admin? 
    end 
end 

感謝! :)

ベストに関しては、 フィリップ

答えて

1

現在、before_action :correct_user, only: [:edit, :update]は、編集ページに入るの管理者を防ぐことができます。この動作を変更するにはcorrect_userメソッドを変更してください:

# Confirms the correct user. 
    def correct_user 
    @user = User.find(params[:id]) 
    redirect_to(root_url) unless current_user?(@user) || current_user.admin? 
    end 
+0

ありがとう!それは私のために十分です:) – PhillipLuepke

+0

@PhillipLuepkeようこそ。私の答えが助けになった場合は、答えの左側にあるチェックマークをクリックして、それを合格とマークすることを検討してください –

関連する問題