我有一个设计用户和内部我有admin作为布尔默认为false。如何修复我的ruby on rails应用程序中的路由,以便仅为管理员为真的管理员提供对某些页面的访问权限。
更新: 我改变后跟我得到的第一个答案说创建一个is_admin?我的控制器中的方法并指定了什么操作。但是,当我这样做时,我得到了一个:
undefined method `admin' for nil:NilClass
更新2:
产品控制器:
class ProductsController < ApplicationController
before_action :is_admin?, only: [:edit, :update, :destroy]
before_action :set_product, only: [:show]
应用程序控制器:
def is_admin?
if signed_in?
redirect_to root_path unless current_user.admin
end
end
答案 0 :(得分:3)
你不应该在路线文件中这样做,这是在控制器过滤部分上做的最好的地方。
class PagesController < ApplicationController
before_action :authenticate_user!
before_action :is_admin?, only: [:action1, :action2]
...
private
def is_admin?
redirect_to root_path unless current_user.admin
end
end
答案 1 :(得分:0)
我建议您对与授权相关的所有内容使用pundit gem和策略。