2009-04-09 8 views
1

technoweenからプラグインrestful_authenticationをインストールして実装しました。restful_authenticationはコントローラ内のアクションにのみ適用されますか?

私のアプリケーションは、ほとんどの場合、レビューの場合を除いて公開されることを意図しています。

私はreviews_controller.rbを持っていますが、ユーザーがログインしているかどうかを気にしたいのは、特定のアクションadd_reviewを送信しているときだけです。

add_reviewは、ベンダー/ショーにフォームが表示されるため、vendor_controller.rbのアクションです。その後、ベンダー/ショーにリダイレクトされ、アップデートが表示されます(これをajaxに変更しようと考えています)。

人がログインしていない場合は、ログイン/サインアップページにリダイレクトします。

restful_authenticationの手順は、コントローラレベルでインクルードされたAuthenticatedSystemを適用することを示していますが、そのコントローラの他のアクションで認証したくないです。

どうすればよいですか?

答えて

4

before_filterを使用し、その後(あなたが複数のためにそれを必要とする場合やApplicationControllerに)あなたがそれを必要とするコントローラでAuthenticatedSystemモジュールを含めると、あなたが望む行動、例えばにのみ適用:

class VendorsController < ApplicationController 
    include AuthenticatedSystem 
    before_filter :login_required, :only => [:add_review] 
end 
+0

before_filterでも取ることができます。 –

+0

意味、:except => [:non-authenticated-controller]? – AFG

+0

:except => [:non_authenticated_action] aaフィルタは、コントローラ内のすべてのアクション(およびそのコントローラをサブクラス化するコントローラ内のアクション)に適用されます。 :のみ/:を除いて、フィルターをより具体的にするアクションを指定します。 – AdminMyServer

0

あなた自身のadd_reviewアクションではなく、安らかなcreateアクションを使用することをお勧めします。安心してルーティングする方法については、http://guides.rubyonrails.org/routing.html

+0

あなたは既存の "作成"を使うことを意味しています...私はルーティングセクションを見ました...私は何を探しているべきか明確ではありませんでした。ありがとう。 – AFG

+0

はい、既存の作成を使用することを意味します。あなたのReviewControllerにadd_reviewアクションを持たせることは、標準に反しているだけで、単にcreateアクションを使うよりも苦痛になります。 –

+0

これはダムかもしれませんが、私はvendors_controller.rbの中からadd_reviewアクションを呼び出しています(これと同様の機能についてのチュートリアル)...ページがベンダーのビューであるため、私はReviewController内にいません。 – AFG

関連する問題