2011-03-19 18 views
0

イベントを編集するためにユーザーのアクセスを制限する必要があります。そのため、作成者だけがこれを行うことができます。イベントの著者は、その行で決定されます。私のrails3 + mongoidアプリケーションでCanCanロールでDevise認証を使用しようとしていますが、 "未定義メソッド"エラーのCanCan能力結果のDevise "current_user"メソッド

<%= f.hidden_field (:author, :value =>current_user.email) %> 

だから、今カンカンの能力ファイルに私はこのコードを使用しようとしています:

class Ability 
    include CanCan::Ability 

    def initialize(user) 
    user ||= User.new  
    if user.role? :admin 
     can :manage, :all 
    else 
     can :read, :all 
     end 
     if 
     user.role?(:normal) 
     can :create, Event 
     can :update, Event do |event| 
      event.try(:author) == current_user.email 
     end 
     can :create, Comment 
     can :update, Comment do |comment| 
     comment.try(:author) == current_user.email 
     end 
    end 
    end 

エンド

をしかし、これは私を結果このエラー:

undefined local variable or method `current_user' for #

は、私は

を変更しようとしました
can :update, Event do |event| 
      event.try(:author) == current_user.email 

event.try(:author) == Devise.current_user.email 

から

が、それは、このエラーので

undefined method `current_user' for Devise:Module

となり、私は何をすべきと私はability.rbから `CURRENT_USER」メソッドのためにどのように呼び出すことができますか?あらゆるヒントを事前にありがとう。

答えて

6

なぜ初期化メソッドでcurrent_userを参照していますか?メソッドに引数として指定されたのはuserだけなのですか?

canCanは、必要なときにcurrent_userのinitializeを呼び出します。

関連する問題