2011-01-20 6 views
5

AbilityクラスのカスタムCanCanアクションの一部を、ハッシュではなくブロックを使用するように変更していますが、実際にはアクセスを実際に制限していません。奇妙なことは、管理と:作成などのような組み込みのアクションは、まだブロックで正常に動作しているようです。CanCanカスタムアクションがブロックで動作しない

これは一例です:

OLD

# this one works 
can :share, Project, :user_id => user.id 

NEW

# this one doesn't work 
can :share, Project do |project| 
    project.users.exists?(user) 
end 

誰でも前にこの問題が発生しましたか?

答えて

1

私はあなたの望ましくない動作についてはほとんど言いませんが、これらのハッシュはレコードを取得する能力を与えるため、ブロックするようにハッシュを変更しないでください。 CanCan wikiでthis articleをよく読んでください。

+0

私はブロックを使用したくないと思っていますが、私の場合はそれを行う唯一の方法のようです。私は、プロジェクトとユーザーの一対多の関係から多対多に移行しました。今は、プロジェクトのすべてのユーザーをチェックする必要があります。 – Matt

+0

ええと、デバッガを使って、CanCanで何が起きているのかを確認してみてください。あるいは、ファイルシステム上のcancan gemのファイルを開いて編集し、変数をダンプすることによって何が渡されるのかを見てください。これは私が他の何かを考えることができないときに私が道にとどまる方法です。もちろん、ファイルを元に戻す;) – Mirko

関連する問題