2015-12-08 76 views
0

我有一個設計用戶和裏面我有管理布爾默認爲false。我該如何修復我的ruby on rails應用程序中的路線,以便爲管理員擁有admin權限的管理員授予訪問某些頁面的權限。設計管理路線

更新: 我改變了第一個答案我說,創建一個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

消除未定義的方法錯誤更改'current_user.admin'到'current_user.try(:admin)'看起來你的'signed_in?'方法不檢查current_user的存在 – Yule

回答

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 
+0

我得到未定義的方法'admin 'for nil:NillClass當用戶不是管理員時 – aboveandbeyond

+0

在'ApplicationController'中放置'is_admin?'以便在另一個控制器上使用(如果需要),並添加'user_signed_in?'條件以檢查用戶是否簽名。 –

+0

@anonymousxxx我得到一個重定向循環錯誤 – aboveandbeyond

0

我建議您使用pundit gem和有關授權的一切政策。