Top Level Namespace

Defined Under Namespace

Classes: Policy

Instance Method Summary collapse

Instance Method Details

#Policy(*args) ⇒ Object

accepts: user:, model:, class: accepts: @model, class:, user:



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

def Policy *args
  opts = args.first.dup

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

  model = opts[:model]

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

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