设计管理员路线

时间:2015-12-08 16:02:35

标签: ruby-on-rails devise

我有一个设计用户和内部我有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

2 个答案:

答案 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和策略。