Class: StructuredParams::Type::Object

Inherits:
ActiveModel::Type::Value
  • Object
show all
Defined in:
lib/structured_params/type/object.rb,
sig/structured_params/type/object.rbs

Overview

Custom type for single StructuredParams::Params objects

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value_class:, **_options) ⇒ Object

: (value_class: singleton(StructuredParams::Params), **untyped) -> void

Parameters:



17
18
19
20
21
# File 'lib/structured_params/type/object.rb', line 17

def initialize(value_class:, **_options)
  super()
  validate_value_class!(value_class)
  @value_class = value_class
end

Instance Attribute Details

#value_classsingleton(StructuredParams::Params) (readonly)

: singleton(StructuredParams::Params)

Returns:



8
9
10
# File 'lib/structured_params/type/object.rb', line 8

def value_class
  @value_class
end

Instance Method Details

#cast(value) ⇒ StructuredParams::Params?

Cast value to StructuredParams::Params instance : (untyped) -> StructuredParams::Params?

Parameters:

Returns:



30
31
32
33
34
35
# File 'lib/structured_params/type/object.rb', line 30

def cast(value)
  return nil if value.nil?
  return value if value.is_a?(@value_class)

  @value_class.new(value) # call new directly instead of cast_value method
end

#permit_attribute_names::Array[untyped]

Returns:

  • (::Array[untyped])


9
# File 'sig/structured_params/type/object.rbs', line 9

def permit_attribute_names: () -> ::Array[untyped]

#serialize(value) ⇒ Object

Serialize (convert to Hash) the object : (untyped) -> untyped

Parameters:

Returns:



39
40
41
42
43
# File 'lib/structured_params/type/object.rb', line 39

def serialize(value)
  return nil if value.nil?

  value.is_a?(@value_class) ? value.attributes : value
end

#typeSymbol

: () -> Symbol

Returns:

  • (Symbol)


24
25
26
# File 'lib/structured_params/type/object.rb', line 24

def type
  :object
end

#validate_value_class!(value_class) ⇒ void

This method returns an undefined value.

Validate the class : (untyped) -> void

Parameters:



49
50
51
52
53
54
55
56
# File 'lib/structured_params/type/object.rb', line 49

def validate_value_class!(value_class)
  raise ArgumentError, 'value_class must inherit from StructuredParams::Params, got NilClass' if value_class.nil?
  raise ArgumentError, "value_class must be a Class, got #{value_class.class}" unless value_class.is_a?(Class)

  return if value_class < StructuredParams::Params

  raise ArgumentError, "value_class must inherit from StructuredParams::Params, got #{value_class}"
end