Module: ActionPolicy::Policy::Aliases

Included in:
Base
Defined in:
lib/action_policy/policy/aliases.rb

Overview

Adds rules aliases support and ability to specify the default rule.

class ApplicationPolicy
include ActionPolicy::Policy::Core
include ActionPolicy::Policy::Aliases

# define which rule to use if `authorize!` called with
# unknown rule
default_rule :manage?

alias_rule :publish?, :unpublish?, to: :update?
end

Aliases are used only during authorize! call (and do not act like real aliases).

Aliases useful when combined with CachedApply (since we can cache only the target rule).

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

DEFAULT =
:__default__

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



26
27
28
# File 'lib/action_policy/policy/aliases.rb', line 26

def included(base)
  base.extend ClassMethods
end

Instance Method Details

#resolve_rule(activity) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/action_policy/policy/aliases.rb', line 31

def resolve_rule(activity)
  self.class.lookup_alias(activity) ||
    (activity if respond_to?(activity)) ||
    (check_rule_naming(activity) if ActionPolicy.enforce_predicate_rules_naming) ||
    self.class.lookup_default_rule ||
    super
end