Sha256: 12a2a8e2f6ed2e466f04c707f60eec5a97d65f2b0e6c347eb5d8205c58dda55e

Contents?: true

Size: 901 Bytes

Versions: 2

Compression:

Stored size: 901 Bytes

Contents

require 'active_record/validations/uniqueness'
require 'schematic/generator/column_validator'

module Schematic
  module Generator
    class Uniqueness < ColumnValidator
      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
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
schematic-0.7.1 lib/schematic/generator/uniqueness.rb
schematic-0.7.0 lib/schematic/generator/uniqueness.rb