我正在尝试创建一个辅助方法来检查登录用户是否被授权使用某些功能,如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
中为空......
我怀疑这是因为实例变量是在私有空间中声明的,但是如果它对视图可用,为什么它对控制器不可用...
无论如何,任何人有任何建议,或正确的方法来做我想做的事情,将不胜感激。
谢谢你。