認証に関しては、CanCan の機能をもう少しよく理解しようとしています。次のコントローラー アクションを想像してください。
def update
if can? :action, Model or can? :resolve, Model or can? :authorize, AnotherModel
# My Code here
respond_with @model
else
raise CanCan::AccessDenied.new(nil, :update, Model)
end
end
を使用して上記の解決策を見つけようとしているときに、この時点に到達しましたauthorize!
。私が見る限り(署名も見てauthorize!
)、次のようなオプションのメッセージとともに、1つの許可(アクション)と1つの件名のみを受け入れます。
def authorize!(action, subject, *args)
# code
end
複数のアクションをチェックするように許可するように指示するために見落としている可能性のある方法はありますか? 2 つの authorize を次々に配置すると、パーミッション間の条件として機能します。基本的に上記のカスタム コードと同様にAND
、条件のように機能することを望みます ( CanCan での発生の問題があり、回避可能ではありません)。私が本当にやりたいこと)。OR
AuthorizationNotPerformed
skip_authorize_resource