2011-02-06 16 views
2

Ruby on Railsでは、コントローラの特定のメソッドをログインしているユーザや特定の権限を持つユーザに制限する標準的な方法がありますか?シンプルさのために、私はブログを持っていて、誰もが私のコントローラーの "リスト"と "ショー"メソッドにアクセスできるようにしたいと思いますが、ログインしたユーザーが "編集"、 "更新" "作成"と他の方法。ロジックをプログラミングするか、少なくともこれらの関数のそれぞれに関数呼び出しをプログラムしてユーザーのアクセス権をチェックする必要がありますか、それとももっと正式な方法がありますか?Rubyでは、コントローラのメソッドを特定のユーザに制限するにはどうしたらいいですか?

+0

場合は、これは、インデックスを見ている人を強制または管理者であることを示すだろう不正 – apneadiving

答えて

4

before_filterを使用できます。

Class blogController 
before_filter :authorize, :except => [:list, :show] 

def authorize 
    #Your code to get a logged in user 
    redirect_to blog_path unless user 
end 
2

これは、例えばBefore filter

と呼ばれています

PostsController < ApplicationController 
    before_filter :authenticate_admin!, :only => [:index, :show] 
+0

あなたがeant何をチェックし、リダイレクトするようにbefore_filterを追加する必要があります。私はあなたが意味すると思う:代わりに:のみを除いて? – robzolkos

+0

いいえ、私は具体的には意味しました。私の例では、indexと:showを許可しないというのはほとんど意味がありません:)。 – berkes

1

あなたの質問のためのいくつかの例についてDevise、特にDevise Wikiをチェックしてください。これは、ログインと認証に役立ちます。 CanCanもチェックしてください。これは承認に役立ちます。

Deviseでは、「インデックス」(リスト)アクションと「表示」アクションに誰もがアクセスできるようにし、ブログ/ポストコントローラの上部にある次の行を使用して他のアクションを制限できます。

before_filter :authenticate_user! :except=>[:index, :show] 
関連する問題