Class: SampleModels::AttributeSequence::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/sample_models/attribute_sequence.rb

Instance Method Summary collapse

Constructor Details

#initialize(pass, model, column, force_unique) ⇒ Builder

Returns a new instance of Builder.



40
41
42
43
# File 'lib/sample_models/attribute_sequence.rb', line 40

def initialize(pass, model, column, force_unique)
  @pass, @model, @column, @force_unique =
    pass, model, column, force_unique
end

Instance Method Details

#baseObject



45
46
47
48
49
50
# File 'lib/sample_models/attribute_sequence.rb', line 45

def base
  base_class = SampleModels.const_get(
    "#{@pass.to_s.capitalize}PassBaseAttributeSequence"
  )
  base_class.new(@model, @column)
end

#runObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/sample_models/attribute_sequence.rb', line 52

def run
  input = base
  uniqueness_validation = if @force_unique
    Model::Validation.new(:validates_uniqueness_of)
  end
  @model.validations(@column.name).each do |validation|
    if validation.type == :validates_uniqueness_of
      uniqueness_validation = validation
    elsif s_class = sequence_class(validation)
      input = s_class.new(@model, @column, validation, input)
    end
  end
  if uniqueness_validation
    input = ValidatesUniquenessOfAttributeSequence.new(
      @model, @column, uniqueness_validation, input
    )
  end
  input
end

#sequence_class(validation) ⇒ Object



72
73
74
75
76
77
# File 'lib/sample_models/attribute_sequence.rb', line 72

def sequence_class(validation)
  sequence_name = validation.type.to_s.camelize + 'AttributeSequence'
  if SampleModels.const_defined?(sequence_name)
    SampleModels.const_get(sequence_name)
  end
end