Class: Schematic::Generator::Uniqueness

Inherits:
ColumnValidator show all
Defined in:
lib/schematic/generator/uniqueness.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



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/schematic/generator/uniqueness.rb', line 7

def generate(builder)
  for_validator ActiveRecord::Validations::UniquenessValidator do |validator|
    unique_name = validator.attributes.first.to_s.dasherize
    additional_fields = (Array.wrap(validator.options[:scope]) || []).map(&:to_s).map(&:dasherize)

    names = Schematic::Generator::Names.new(@klass)
    builder.xs :unique, 'name' => "#{unique_name}-must-be-unique" do |unique|
      unique.xs :selector, 'xpath' => "./#{names.element}"
      unique.xs :field, 'xpath' => unique_name
      additional_fields.each do |additional_field|
        unique.xs :field, 'xpath' => additional_field
      end
    end
  end
end