module ActionPolicy::Policy::Aliases

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).

Constants

DEFAULT

Public Class Methods

included(base) click to toggle source
# File lib/action_policy/policy/aliases.rb, line 26
def included(base)
  base.extend ClassMethods
end

Public Instance Methods

resolve_rule(activity) click to toggle source
Calls superclass method
# 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

Private Instance Methods

check_rule_naming(activity) click to toggle source
# File lib/action_policy/policy/aliases.rb, line 39
        def check_rule_naming(activity)
  unless activity[-1] == "?"
    raise NonPredicateRule.new(self, activity)
  end
  nil
end