Exception: ViewModel::DeserializationError::DatabaseConstraint
- Inherits:
-
ViewModel::DeserializationError
- Object
- StandardError
- AbstractError
- AbstractErrorWithBlame
- ViewModel::DeserializationError
- ViewModel::DeserializationError::DatabaseConstraint
- Defined in:
- lib/view_model/deserialization_error.rb
Instance Attribute Summary collapse
-
#detail ⇒ Object
readonly
Returns the value of attribute detail.
Attributes inherited from AbstractErrorWithBlame
Class Method Summary collapse
-
.from_exception(exception, nodes = []) ⇒ Object
Database constraint errors are pretty opaque and stringly typed.
Instance Method Summary collapse
-
#initialize(detail, nodes = []) ⇒ DatabaseConstraint
constructor
A new instance of DatabaseConstraint.
Methods inherited from ViewModel::DeserializationError
Methods inherited from AbstractErrorWithBlame
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.
340 341 342 343 |
# File 'lib/view_model/deserialization_error.rb', line 340 def initialize(detail, nodes = []) @detail = detail super(nodes) end |
Instance Attribute Details
#detail ⇒ Object (readonly)
Returns the value of attribute detail.
338 339 340 |
# File 'lib/view_model/deserialization_error.rb', line 338 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.
348 349 350 351 352 353 354 355 |
# File 'lib/view_model/deserialization_error.rb', line 348 def self.from_exception(exception, nodes = []) case exception.cause when PG::UniqueViolation, PG::ExclusionViolation UniqueViolation.from_postgres_error(exception.cause, nodes) else self.new(exception., nodes) end end |