module ActionPolicy::Behaviours::PolicyFor
Adds `policy_for` method
Public Instance Methods
policy_for(record:, with: nil, namespace: authorization_namespace, context: nil, allow_nil: false, default: default_authorization_policy_class, strict_namespace: authorization_strict_namespace)
click to toggle source
Returns policy instance for the record.
# File lib/action_policy/behaviours/policy_for.rb, line 11 def policy_for(record:, with: nil, namespace: authorization_namespace, context: nil, allow_nil: false, default: default_authorization_policy_class, strict_namespace: authorization_strict_namespace) context = context ? authorization_context.merge(context) : authorization_context policy_class = with || ::ActionPolicy.lookup( record, namespace:, context:, allow_nil:, default:, strict_namespace: ) policy_class&.new(record, **context) end
policy_for_cache_key(record:, with: nil, namespace: nil, context: authorization_context, **)
click to toggle source
# File lib/action_policy/behaviours/policy_for.rb, line 60 def policy_for_cache_key(record:, with: nil, namespace: nil, context: authorization_context, **) record_key = record._policy_cache_key(use_object_id: true) context_key = context.values.map { _1._policy_cache_key(use_object_id: true) }.join(".") "#{namespace}/#{with}/#{context_key}/#{record_key}" end