Exception: ViewModel::DeserializationError::DatabaseConstraint

Inherits:
ViewModel::DeserializationError show all
Defined in:
lib/view_model/deserialization_error.rb

Instance Attribute Summary collapse

Attributes inherited from AbstractErrorWithBlame

#nodes

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ViewModel::DeserializationError

#code

Methods inherited from AbstractErrorWithBlame

#meta

Methods inherited from AbstractError

#aggregation?, #causes, #code, #exception, #meta, #status, #title, #to_s, #view

Constructor Details

#initialize(detail, nodes = []) ⇒ DatabaseConstraint

Returns a new instance of DatabaseConstraint.



338
339
340
341
# File 'lib/view_model/deserialization_error.rb', line 338

def initialize(detail, nodes = [])
  @detail = detail
  super(nodes)
end

Instance Attribute Details

#detailObject (readonly)

Returns the value of attribute detail.



336
337
338
# File 'lib/view_model/deserialization_error.rb', line 336

def detail
  @detail
end

Class Method Details

.from_exception(exception, nodes = []) ⇒ Object

Database constraint errors are pretty opaque and stringly typed. We can do our best to parse out what metadata we can from the error, and fall back when we can’t.



346
347
348
349
350
351
352
353
# File 'lib/view_model/deserialization_error.rb', line 346

def self.from_exception(exception, nodes = [])
  case exception.cause
  when PG::UniqueViolation
    UniqueViolation.from_postgres_error(exception.cause, nodes)
  else
    self.new(exception.message, nodes)
  end
end