Class: Schematic::Generator::Restrictions::Enumeration

Inherits:
Base show all
Defined in:
lib/schematic/generator/restrictions/enumeration.rb

Instance Attribute Summary

Attributes inherited from ColumnValidator

#column, #klass

Instance Method Summary collapse

Methods inherited from ColumnValidator

#for_validator, #initialize, #validators_for_column

Constructor Details

This class inherits a constructor from Schematic::Generator::ColumnValidator

Instance Method Details

#generate(builder) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/schematic/generator/restrictions/enumeration.rb', line 8

def generate(builder)
  for_validator ActiveModel::Validations::InclusionValidator do |validator|
    next if column.type == :boolean
    if validator.options[:in].respond_to?(:call)
      valid_values = validator.options[:in].call(nil) rescue []
    else
      valid_values = validator.options[:in]
    end
    valid_values.each do |value|
      builder.xs(:enumeration, 'value' => value)
    end
  end
  enumeration_method = "xsd_#{column.name}_enumeration_restrictions".to_sym
  if klass.respond_to? enumeration_method
    klass.send(enumeration_method).each do |enumeration|
      builder.xs(:enumeration, 'value' => enumeration)
    end
  end
end