Exception: Grape::Exceptions::Validation

Inherits:
Base
  • Object
show all
Defined in:
lib/grape/exceptions/validation.rb

Constant Summary collapse

EMPTY_BACKTRACE =
[].freeze

Constants inherited from Base

Base::MESSAGE_STEPS

Instance Attribute Summary collapse

Attributes inherited from Base

#headers, #status

Instance Method Summary collapse

Methods inherited from Base

#[]

Constructor Details

#initialize(params:, message: nil, status: nil, headers: nil) ⇒ Validation

Returns a new instance of Validation.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/grape/exceptions/validation.rb', line 10

def initialize(params:, message: nil, status: nil, headers: nil)
  @params = Array(params)
  if message
    @message_key = case message
                   when Symbol then message
                   when Hash then message[:key]
                   end
    message = translate_message(message)
  end

  super(status:, message:, headers:)
  # Pre-seed the backtrace so Ruby's raise skips capture. Validation errors are
  # a hot path (raised per bad attribute) and end up as 400 Bad Request responses;
  # backtraces here point into Grape internals and have no diagnostic value.
  set_backtrace(EMPTY_BACKTRACE)
end

Instance Attribute Details

#message_keyObject (readonly)

Returns the value of attribute message_key.



8
9
10
# File 'lib/grape/exceptions/validation.rb', line 8

def message_key
  @message_key
end

#paramsObject (readonly)

Returns the value of attribute params.



8
9
10
# File 'lib/grape/exceptions/validation.rb', line 8

def params
  @params
end

Instance Method Details

#as_json(*_args) ⇒ Object

Remove all the unnecessary stuff from Grape::Exceptions::Base like status and headers when converting a validation error to json or string



29
30
31
# File 'lib/grape/exceptions/validation.rb', line 29

def as_json(*_args)
  to_s
end

#errorsObject

Returns self so callers (e.g. ValidationErrors#initialize) can treat a single Validation and a ValidationArrayErrors wrapper uniformly via flat_map(&:errors) — Array returns flatten in, non-Array returns (i.e. this self) append as one element.



37
38
39
# File 'lib/grape/exceptions/validation.rb', line 37

def errors
  self
end