2011-10-25 15 views
5

routes.rbにカスタムロジックを入れても問題ありませんか?例えばRails routes logic

:そのように動作しません

unless current_user 
    root :to => anonymous_page 
else 
    root :to => logged_in_page 
end 

答えて

2

経路にカスタムロジックを入れることができますが、アベンジャーが示唆したように - ルートファイルがロードされているため、「current_user」は機能しません。私たちは時には私たちのルートファイルでロジックを使用します(例えば、RAILS_ENV == 'development'の場合にのみ利用可能なルートを設定するなど)。あなたはおそらく欲しい

は「anonymous_page」などのbefore_filterです:

before_filter :redirect_if_logged_in, :only => :anonymous_page 

def redirect_if_logged_in 
    redirect_to logged_in_page if current_user.present? 
end 
2

。ルートは、要求ごとにではなく、サーバーの起動時に読み取られ/作成されます。そのようなロジックをコントローラに入れなければなりません。

+0

注:ここでは魔法を起こすために何かをしています:https://github.com/plataformatec/devise/wiki/How-To:-定義 - 異なる - ルート - ルート - アウトユーザ – Jonathan

0

あなたは何を考えているあなたを行うにクリアランス宝石を使用することができます。クリアランスのドキュメントから:

これは、クリアランスがミドルウェアスタックに追加され、ルートが処理される前にサインインされたステータスを利用できるためです。

関連する問題