Module: Castkit::Contract::DataObject
- Defined in:
- lib/castkit/contract/data_object.rb
Overview
Extension module that adds ‘.to_dataobject` and `.dataobject` support to Castkit contracts.
This allows any contract to be dynamically converted into a Castkit::DataObject class, enabling reuse of validation schemas for serialization, coercion, or API response modeling.
This module is automatically included by Castkit contract classes and is not intended to be used manually.
Instance Method Summary collapse
-
#dataobject ⇒ Class<Castkit::DataObject>
Returns or builds a Castkit::DataObject from the current contract.
-
#to_dataobject ⇒ Class<Castkit::DataObject>
(also: #to_dto)
Constructs an ephemeral Castkit::DataObject class from the current contract.
Instance Method Details
#dataobject ⇒ Class<Castkit::DataObject>
Returns or builds a Castkit::DataObject from the current contract.
Memoizes the result to avoid repeated regeneration.
36 37 38 |
# File 'lib/castkit/contract/data_object.rb', line 36 def dataobject @dataobject ||= to_dataobject end |
#to_dataobject ⇒ Class<Castkit::DataObject> Also known as: to_dto
Constructs an ephemeral Castkit::DataObject class from the current contract.
This creates a new anonymous class each time unless memoized via #dataobject.
48 49 50 51 52 53 54 |
# File 'lib/castkit/contract/data_object.rb', line 48 def to_dataobject Class.new(Castkit::DataObject).tap do |klass| attributes.each_value do |attr| klass.attribute(attr.field, attr.type, **attr.) end end end |