Top Level Namespace

Defined Under Namespace

Classes: Object, Policy

Instance Method Summary collapse

Instance Method Details

#Policy(*args) ⇒ Object

Raises:

  • (ArgumentError)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/clean-policy/global.rb', line 1

def Policy *args
  opts = args.first.dup

  unless opts.is_a?(Hash)
    opts = { model: opts }
    opts.merge! args[1] if args[1]
  end

  raise ArgumentError, 'User not defined' unless opts.key?(:user)

  model = opts[:model]

  klass =
  if model
    opts[:class] || ('%s_policy' % model.class).classify.constantize
  else
    ApplicationPolicy
  end

  klass.new(user: opts[:user], model: model)
end