2010-11-25 4 views
1

これは簡単な質問のように思われます。CanCanなどからのDeviseヘルパーメソッドへのアクセス

認証にDeviseを使用し、新しいRails 3アプリで認証するためにCanCanを使用します。

CanCanが提供するAbilityクラス内のApplicationControllerで定義されたメソッドにアクセスするにはどうすればよいですか?

としても知られ、このような何か:user_signed_in?ApplicationControllerで定義されている

class Ability 

    include CanCan::Ability 

    def initialize(user) 

    user ||= User.new # Guest user. 

    can :create, Post if user_signed_in? 

    end 
end 

答えて

3

これはあなたが望む答えではないかもしれませんが、混合してはならないコードの問題を混在させたいと思うようです。

承認ルール内でuser_signed_in?にアクセスすることをお勧めしますか? ...認可は誰かができることにのみ関係しているので、誰かが認証されているかどうかに関係してはいけません。

あなたのユーザが認証されていることを確認するために投稿コントローラのフィルタ(before_filter :authenticate_user!)の前には、目的を達成するのに十分なはずです。あなたの認証ルールは、と一緒にの認証チェックと一緒に実行するのではなく、そのコードと混同することができます。

それはあなたが署名されていないユーザーがリソースを読んで、それを書くことができないことができるようにしたいかもしれ

+1

:-)階層化アプローチだ...それはauthenticate_user' 'よりも細かいです提供します。 –

+0

@PeterDeWeese質問は、匿名ユーザーにリソースに対する読み取り権を要求事項として規定していません。 – Scott

関連する問題