ログインに特定のルートを制限します。私は唯一のログインユーザーのためにアクセスできるように/何かをしたいのですが、私は現在の訪問者がログインしていない場合は、ユーザーIDまたはnilを返すCURRENT_USERヘルパーを持っているユーザー
をどこのコントローラへのアクセスを制限するのが最適な場所か、ルートの一部として追加できますか?
ログインに特定のルートを制限します。私は唯一のログインユーザーのためにアクセスできるように/何かをしたいのですが、私は現在の訪問者がログインしていない場合は、ユーザーIDまたはnilを返すCURRENT_USERヘルパーを持っているユーザー
をどこのコントローラへのアクセスを制限するのが最適な場所か、ルートの一部として追加できますか?
コントローラに:before_filterを追加し、そのためのアクションを作成する必要があります。
:before_filter :authenticate
def authenticate
redirect_to(registration_path) unless current_user.nil?
end
また、:または:以外のフィルタオプションを使用することもできます。 または私は控えめな質問をしなかった?
コントローラでこれを処理する必要があります。ルートは物事がどこに行くのかを決定し、次にあなたがそこに行くことが許されているかどうかを決定するのはコントローラに任されます。
ApplicationControllerに汎用のauthenticate
メソッドを用意して、誰かがログインしているかどうかをチェックし、そうでない場合はログインページにリダイレクトする必要があります。次に、あなたの特定のコントローラで:
class SomethingController < ApplicationController
before_filter :authenticate
def handler
#...
end
end
あなたは:except
オプションを使用して、特定の処理のための認証をスキップすることができます
before_filter :authenticate, :except => [ :this_one, :and_this_one ]
他のオプションも同様にありますが、詳細についてはAction Controller Overviewのフィルタセクションを参照してください。
また、railstutorial.orgにお勧めします。初心者のための素敵なチュートリアル。 – avy
これを動作させるには 'before_filter:authenticate'を使う必要がありました。先頭のコロンはありません。 – jcollum
これは応答するので、これは 'before_action'に名前が変更され、正しい形式は' before_action:authenticate'と '@ current_user.nil?'です。これはおそらくインスタンス変数になるでしょう。 – watt