5

私は、Victor Martinとほぼ同じ問題を抱えています (ここで尋ねられた質問を見ることができます)。

条件の使用を伴わないほぼすべての機能に対して、宣言型承認が機能しています。例えば

has_permission_on :users, :to => [:edit, :update, :destroy] do
if_attribute :user => is { current_user }
end

宣言的認可に関する一般的な落とし穴はありますか? 私は authlogic を使用していますが、アプリケーション コントローラーの 'current_user' メソッドが問題の原因ではないかと疑っています。

4

2 に答える 2

5

コントローラーで "filter_access_to" を使用している場合は、":attribute_check => true" であることを確認する必要があることに注意してください。それがなければ、条件付きの「if_attribute」宣言は何もしません。

これについての詳細は、宣言型承認のドキュメントを参照してください。

于 2010-08-27T18:47:18.700 に答える
1

まだ追加していない場合は、これをApplicationControllerに追加する必要があります。

before_filter :set_current_user
protected
def set_current_user
  Authorization.current_user = current_user
end

次に、ルールは次のようになります。

has_permission_on :users, :to => [:edit, :update, :destroy] do
  if_attribute :user => is { user }
end

私の知る限り、declarative_authorizationはcrontrollerのメソッドを呼び出さずcurrent_user、例で何を意味するのかわかりませんが、ファイルで使用できるAuthorization.current_usercalledのインスタンスを提供します。userauthorization_rules.rb

于 2010-06-06T23:22:58.243 に答える