1

これは簡単な質問のように思えますが、頭を包むことはできません。

新しいRails3アプリでの認証にDeviseを使用し、承認にCanCanを使用します。

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

別名、このようなもの:

class Ability

  include CanCan::Ability

  def initialize(user)

    user ||= User.new # Guest user.

    can :create, Post if user_signed_in?

  end
end

ここuser_signed_in?で、はで定義されていApplicationControllerます。

4

1 に答える 1

3

これはあなたが望んでいた答えではないかもしれませんが、混合すべきではないコードの懸念を混合したいと思っているようです。

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

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

それは階層化されたアプローチです:-)

于 2010-11-25T10:51:46.853 に答える