2011-09-14 4 views

答えて

22
で:任意のコントローラで

:これは署名されるadminユーザーを必要とbefore_filterを作成するための正しい方法であれば

あなたは私に言うことができます

このアプローチで行ってください

before_filter :authenticate_user! 
    before_filter do 
    redirect_to new_user_session_path unless current_user && current_user.admin? 
    end 

これにより、すべてのゲストも強制的にサインインされます。それははるかにだ - あなたは私のアプローチは、role属性を作成して、意図したロールのセットに対して、その文字列の値を確認することであるインスタンスメソッドにアクセスするにはちょうどadmin?

def admin? 
    self.admin == true 
end 

を認証を強制するデフォルトの方法を変更する必要はありません多くのブール型属性を作成する必要がなくなり、柔軟に対応できます。

+0

ありがとうございます。私はこれを後で試してみます。 –

+0

あなたは歓迎です=) –

+1

admin?を定義する必要はありません。管理列がすでにブール値の場合は、user.adminを呼び出すことができますか?管理者を持たずに自動的にtrueまたはfalseを返しますか?メソッドを呼び出します。 – n0denine

1

上記の(Michael De Silvaによる)答えを見ると、彼が使用したコードに問題がありました。彼はパスを記号(:new_user_session_path)として書いていましたが、私はそれを通常のパスヘルパー(new_user_session_path)にする必要がありました。私がこれを変更するまでは、パスが無効であると言ってエラーが発生しました。 (私はRails 5を実行しています)

これは他の人に役立つことを願っています!

関連する問題