Class: Schematic::Generator::Column
- Inherits:
-
Object
- Object
- Schematic::Generator::Column
- Defined in:
- lib/schematic/generator/column.rb
Instance Attribute Summary collapse
-
#restriction_classes ⇒ Object
Returns the value of attribute restriction_classes.
Class Method Summary collapse
Instance Method Summary collapse
- #generate(builder) ⇒ Object
-
#initialize(klass, column, additional_methods = {}, ignored_methods = [], required_methods = []) ⇒ Column
constructor
A new instance of Column.
- #map_type(column) ⇒ Object
- #minimum_occurrences_for_column ⇒ Object
- #skip_generation? ⇒ Boolean
Constructor Details
#initialize(klass, column, additional_methods = {}, ignored_methods = [], required_methods = []) ⇒ Column
Returns a new instance of Column.
11 12 13 14 15 16 17 |
# File 'lib/schematic/generator/column.rb', line 11 def initialize(klass, column, additional_methods = {}, ignored_methods = [], required_methods = []) @klass = klass @column = column @additional_methods = additional_methods @ignored_methods = ignored_methods @required_methods = required_methods end |
Instance Attribute Details
#restriction_classes ⇒ Object
Returns the value of attribute restriction_classes.
4 5 6 |
# File 'lib/schematic/generator/column.rb', line 4 def restriction_classes @restriction_classes end |
Class Method Details
.restriction_classes ⇒ Object
6 7 8 |
# File 'lib/schematic/generator/column.rb', line 6 def restriction_classes @restriction_classes ||= [Restrictions::Length, Restrictions::Enumeration, Restrictions::Numericality, Restrictions::Pattern, Restrictions::Custom] end |
Instance Method Details
#generate(builder) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/schematic/generator/column.rb', line 19 def generate(builder) return if skip_generation? builder.xs :element, "name" => @column.name.dasherize, "minOccurs" => minimum_occurrences_for_column, "maxOccurs" => "1" 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) end end end end end end |
#map_type(column) ⇒ Object
53 54 55 |
# File 'lib/schematic/generator/column.rb', line 53 def map_type(column) Types::COMPLEX[column.type][:complex_type] end |
#minimum_occurrences_for_column ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/schematic/generator/column.rb', line 38 def minimum_occurrences_for_column 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.[:allow_blank] != true && column_validation.[:if].nil? && column_validation.[:unless].nil? return "1" end end "0" end |
#skip_generation? ⇒ Boolean
57 58 59 60 |
# File 'lib/schematic/generator/column.rb', line 57 def skip_generation? @additional_methods.keys.map(&:to_s).include?(@column.name) || @ignored_methods.map(&:to_s).include?(@column.name) end |