0

私はroutes.rbを持っています:

resource :account, :only => [:show, :update]

私のability.rbには、

can :read, Account, :id => user.account_id

AccountsController で def update および def show 関数を定義しました

この構成により、/account に対して GET 要求を実行すると、403 アクセス拒否エラーが発生します。しかし、自分のability.rbを

can :manage, Account, :id => user.account_id

それは正常に動作します。:show 関数が :read にマップされていない理由は何ですか?

4

1 に答える 1

0

さて、私は問題が何であるかを理解しました。だから、取引は私がカンカンの承認を呼んでいたということでした!私のコードのいくつかの制約のために自分自身を機能させ、私は次のようなものを渡していました

authorize!("show", @class_obj)

しかし実際にはCanCanはシンボルを期待しているので、正しい呼び出しは

authorize!(:show, @class_obj)

これは次のように実現できます。

authorize!("show".intern, @class_obj)
于 2012-10-16T17:48:07.720 に答える