Class: JsonModel::TypeSpec::Enum

Inherits:
JsonModel::TypeSpec show all
Defined in:
lib/json_model/type_spec/enum.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from JsonModel::TypeSpec

#cast, #referenced_schemas, resolve

Constructor Details

#initialize(*values) ⇒ Enum

Returns a new instance of Enum.

Parameters:



9
10
11
12
13
14
15
16
# File 'lib/json_model/type_spec/enum.rb', line 9

def initialize(*values)
  super()
  @values = values

  if @values.blank?
    raise(ArgumentError, 'Enum type spec requires a non-empty enum array')
  end
end

Instance Attribute Details

#valuesObject (readonly)

Returns the value of attribute values.



6
7
8
# File 'lib/json_model/type_spec/enum.rb', line 6

def values
  @values
end

Instance Method Details

#as_schema(**_options) ⇒ Hash

Parameters:

  • _options (Hash)

Returns:

  • (Hash)


20
21
22
23
24
# File 'lib/json_model/type_spec/enum.rb', line 20

def as_schema(**_options)
  {
    enum: values,
  }.compact
end

#register_validations(name, klass) ⇒ Object

Parameters:

  • name (Symbol)
  • klass (ActiveModel::Validations)


28
29
30
31
32
# File 'lib/json_model/type_spec/enum.rb', line 28

def register_validations(name, klass)
  super

  klass.validates(name, inclusion: { in: values }, allow_nil: true)
end