0

私はモデルグループとモデル人物を持っています。個人はグループに属し、グループには多くの人がいます。それらはネストされたリソースです。このページによると、次のように PeopleController で承認するだけで十分なはずです。

load_and_authorize_resource :group
load_and_authorize_resource :person, :through => :group

個人を直接管理する機能を特に追加していませんが、グループを通じて承認されるため、その必要はないことを暗示しています。許可は Group モデルでは正しく機能しますが、Person では失敗します。

このアビリティを追加することで、この問題を回避できます。

can :manage, Person, :group => { :user_id => user.id }

しかし、繰り返しになりますが、ドキュメントには、これを行うのは「良い考え」ですが (なぜですか?)、認証が機能するために必要ではないと書かれています。

あなたが提供できる助けをいただければ幸いです!

4

1 に答える 1

0

ブロックで能力を定義することをお勧めします。

can :manage, Person do |person|
  person.group.user_id == user.id
end

これは、ネストされたリソースでハッシュを使用して機能を定義するよりもうまく機能します。試す!

于 2013-10-22T17:54:37.883 に答える