lib/schematic/generator/column.rb in schematic-0.5.9 vs lib/schematic/generator/column.rb in schematic-0.6.0
- old
+ new
@@ -17,14 +17,18 @@
end
def generate(builder)
return if skip_generation?
- builder.xs :element,
+ options = {
"name" => @column.name.dasherize,
- "minOccurs" => minimum_occurrences_for_column,
- "maxOccurs" => "1" do |field|
+ "minOccurs" => minimum_occurrences_for_column.to_s,
+ "maxOccurs" => "1"
+ }
+ options.merge!({"nillable" => "false"}) if minimum_occurrences_for_column > 0
+
+ builder.xs :element, options do |field|
field.xs :complexType do |complex_type|
complex_type.xs :simpleContent do |simple_content|
simple_content.xs :restriction, "base" => map_type(@column) do |restriction|
self.class.restriction_classes.each do |restriction_class|
restriction_class.new(@klass, @column).generate(restriction)
@@ -34,21 +38,21 @@
end
end
end
def minimum_occurrences_for_column
- return "1" if @required_methods.include?(@column.name.to_sym)
- return "0" unless @klass.respond_to?(:_validators)
+ return 1 if @required_methods.include?(@column.name.to_sym)
+ return 0 unless @klass.respond_to?(:_validators)
@klass._validators[@column.name.to_sym].each do |column_validation|
next unless column_validation.is_a? ActiveModel::Validations::PresenceValidator
if column_validation.options[:allow_blank] != true &&
column_validation.options[:if].nil? &&
column_validation.options[:unless].nil?
- return "1"
+ return 1
end
end
- "0"
+ 0
end
def map_type(column)
Types::COMPLEX[column.type][:complex_type]
end