2010-12-03 4 views
0

私はRyan Bのチュートリアルに従っていますが、ユーザーの役割を検査しようとすると何か問題があります。CanCanのNilがability.rbモデルのパラメータを初期化します

なぜ私はそれを検査するときにnil初期化パラメータを得ました。 Ryanのチュートリアルで、initializeメソッドとUser Modelで 'user'パラメータを使用して、Personオブジェクトとinitializeパラメータの間に接続がありますか?ここで基本的なことを忘れていますか?これらは私のコードです、ありがとう!

class Ability 
    include CanCan::Ability 

    def initialize(person) 
    raise person.inspect 
    can :read, :all 
    end 
end 

答えて

0

このコードを実行すると、ほとんどの場合、ログインしているユーザーはいません。ログインしていないユーザーに対してアクセス許可をチェックするために何らかのゲストユーザーを作成する必要があります。

def initialize(person) 
    user ||= User.new 
    if user.role? :somerole 
     can :read, :all 
    else 
    #whatever guest can do 
    end 
    end 
+0

これは、またはperson.nilをテストすることもできますか?ゲスト権利を割り当てる。 –

+0

管理者としてログインしてもテストしましたが、引き続きnil値を取得します。 CanCanと組み合わせるためにAuthLogicを最初にインストールする必要がありますか?私はCanCanで役割を追加できるように、セッションからのユーザーステータスを知っていれば分かりますか?しかし、できれば、セッションデータをモデルでどのように取得できますか? –

+3

解決済みのREADMEファイルには、別のユーザーオブジェクトを使用する場合、current_abilityメソッドをオーバーライドする必要があることが書かれています。 David Sulcに感謝します。 –

関連する問題