2011-12-21 1 views
1

すべてのコントローラで使用できるアプリケーションコントローラにメソッドを書き込もうとしています。それは単純な役割です。rails 3どのタイプがcurrent_userであるかを確認するためのコントローラメソッドの作成

def user_is_admin 
    if current_user.admin == true 
    end 
    end 

現在ログインしているユーザーの.adminがtrueに設定されている場合、このメソッドはtrueを返す必要があります。

はその後、私のコントローラに私がやっている: before_filterを:user_is_admin、:のみ=> [ショー]

コードがerroringされていないが、そのも見ているからページを保護しません。

答えて

1

現在のユーザーが管理者でない場合、アクションを中断するために何かを行うにはbefore_filterが必要です。

def user_is_admin 
    if current_user.admin != true 
     redirect_to <some_other_action> 
     return false 
    end 
end 

これは、current_userが管理者ではないことを確認していることに注意してください。 代わりに、あなたはリダイレクトせずに例外を発生させたり、エラーテンプレートをレンダリングすることができます:

def user_is_admin 
    if current_user.admin != true 
     raise "Admin required" 
    end 
end 

または

def user_is_admin 
    if current_user.admin != true 
     render :template => 'shared/admin_required' 
     return false 
    end 
end 
0

これはどういう意味ですか?

def user_is_admin 
    redirect_to "/" unless current_user.admin 
end 
1

をあなたはあなたのコードが何をしているか、その後別の何かのために求めています。

あなたの方法をしたいと思う何、このようなものである:彼らはリダイレクトされるだろうどこroot_urlがある

def user_is_admin 
    redirect_to root_url, notice: "You do not have sufficient privileges for that!" unless current_user.admin 
end 

。まだbefore_filterが必要です。

+0

編集してくれてありがとう、どうして私がそれを入力しなかったのかわからない:) – andrewpthorp

関連する問題