module Pavlov::Operation

Public Instance Methods

call(*args, &block) click to toggle source
# File lib/pavlov/operation.rb, line 37
def call(*args, &block)
  fail Pavlov::ValidationError, 'Some validations fail, cannot execute' unless valid?
  check_authorization
  execute(*args, &block)
end
errors() click to toggle source
# File lib/pavlov/operation.rb, line 26
def errors
  @errors ||= ActiveModel::Errors.new(self)
end
valid?() click to toggle source
# File lib/pavlov/operation.rb, line 30
def valid?
  check_validation
  errors.empty?
rescue Pavlov::ValidationError
  false
end

Private Instance Methods

check_authorization() click to toggle source
# File lib/pavlov/operation.rb, line 45
def check_authorization
  raise_unauthorized unless authorized?
end
check_validation() click to toggle source
# File lib/pavlov/operation.rb, line 53
def check_validation
  fail Pavlov::ValidationError, "Missing arguments: #{missing_arguments.inspect}" if missing_arguments.any?
  validate
end
missing_arguments() click to toggle source
# File lib/pavlov/operation.rb, line 58
def missing_arguments
  attribute_set.select do |attribute|
    !attribute.options.key?(:default) && send(attribute.name).nil?
  end
end
raise_unauthorized(message = 'Unauthorized') click to toggle source
# File lib/pavlov/operation.rb, line 49
def raise_unauthorized(message = 'Unauthorized')
  fail Pavlov::AccessDenied, message
end
validate() click to toggle source
# File lib/pavlov/operation.rb, line 64
def validate
  # no-op, users should override this
end