ログインしたユーザーが、、、、、などの特定の機能を使用する権限を持っているかどうかを確認するヘルパー メソッドを作成しようとnew
しcreate
てedit
いupdate
ますdestroy
。
これはビューに到達すると機能しますが、賢いユーザーがGames
正しい URL を入力するだけで新しいものを作成できないようにしたいと考えています。
私のコントローラーには次のものがあります:
before_action :is_admin, only: [:index, :platform, :publisher, :new, :edit, :create, :update, :destroy]
def destroy
if !@admin
@game.destroy
respond_to do |format|
format.html { redirect_to games_url }
format.json { head :no_content }
end
else
redirect_to @game, notice: 'User not authorized to delete games.'
end
end
def is_admin
@admin = current_user.roles.detect {|r| r.name == "Super Admin" || r.name == "Game Admin"}
end
デバッガーを使用すると、プライベート メソッドが実際に呼び出されていることがわかりますが、パブリック メソッド@admin
では null です...
これは、インスタンス変数がプライベート空間で宣言されているためだと思われますが、ビューで使用できる場合、コントローラーで使用できないのはなぜですか...
とにかく、誰かが私がやろうとしていることを行うためのアドバイスや正しい方法を持っていれば、それは大歓迎です.
ありがとうございました。