2011-12-08 16 views
2

私はDeviseを使用していますが、ユーザーは管理者でもなくてもかまいません(真、偽)。Deviseでコントローラのアクションをどのように保護しますか?

誰かが私のようなコントローラのアクションを保護する方法を見つけ出すのに役立ちます。私は工夫は、あなたがビューで使用して管理者を呼び出すが、これは、コントローラで使用することができます?:

if current_user.admin? 
することができます知っている

def new 
    @post = Post.new 
    end 

ありがとうございます。

+0

制限を保持するために、カンカンまたはそのような何かを使用するが、これは行くには良い方法ですか?私のコントローラで はフィルタ before_filterの前に追加します。if_adminを、:のみ=> [:新しい、編集、:作成、:破棄] とプライベートメソッドを追加しますか? –

答えて

10

あなたは、単に、このようにフィルタを追加することができます。

class YourController < ApplicationController 
    before_filter :check_access, :only => :new 

    ... 

    def new 
    @post = Post.new 
    end 

    protected 
    def check_access 
    redirect_to <whatever> and return unless current_user.admin? 
    end 
end 

またはうまく

+0

Alonyに感謝、私はちょうど同じ行に沿って考えていた。デフォルトルート(match ':controller(/:id(。:format))')が定義されている場合、protected/private節がユーザを妨げるのであれば、なぜ「protected」と「private」を使用するのでしょうか? –

+0

保護されている場合は通常の動作としてフィルタにアクセスすることはできません – alony

+1

あなたはこのフィルタを子コントローラで使用することができ、プライベートの場合は現在のコントローラからしかアクセスできません – alony

関連する問題