class Policy::Proxy

Public Class Methods

new(policy) click to toggle source
# File lib/egoist/proxy.rb, line 24
def initialize policy
  @policy = policy
end

Public Instance Methods

method_missing(name, *args) { |error| ... } click to toggle source
# File lib/egoist/proxy.rb, line 28
def method_missing name, *args, &block
  name   = name.to_s.sub(/(.)$/, '')
  action = $1

  @policy.can?(name, *args)
  @policy.model || true
rescue Policy::Error => error
  if block_given?
    yield error
    nil
  elsif action == '!'
    raise error
  elsif action == '?'
    nil
  else
    raise ArgumentError.new('Bad policy method %s' % name)
  end
end