Module: Granite::Action::Preconditions::ClassMethods

Defined in:
lib/granite/action/preconditions.rb

Instance Method Summary collapse

Instance Method Details

#precondition(*args, &block) ⇒ Object

Define preconditions for current action.

Parameters:

  • options (Hash)

    hash with

  • block (Block)

    which returns truthy value when precondition should pass.

  • message (Hash)

    a customizable set of options

  • group (Hash)

    a customizable set of options



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/granite/action/preconditions.rb', line 42

def precondition(*args, &block)
  options = args.extract_options!
  if block
    add_precondition(BasePrecondition, options, &block)
  else
    common_options = options.extract!(:if, :unless)
    args.each do |type|
      precondition common_options.merge(type => {})
    end
    options.each do |key, value|
      value = Array.wrap(value)
      precondition_options = value.extract_options!
      add_precondition(klass(key), *value, precondition_options.merge!(common_options))
    end
  end
end