Class: Reform::Form::ActiveModel::ModelValidations::Mapping

Inherits:
Object
  • Object
show all
Defined in:
lib/reform/form/active_model/model_validations.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMapping

Returns a new instance of Mapping.



61
62
63
64
# File 'lib/reform/form/active_model/model_validations.rb', line 61

def initialize
  @forward_map = {}
  @inverse_map = {}
end

Class Method Details

.from_representable_attrs(attrs) ⇒ Object



51
52
53
54
55
56
57
58
59
# File 'lib/reform/form/active_model/model_validations.rb', line 51

def self.from_representable_attrs(attrs)
  new.tap do |mapping|
    attrs.each do |dfn|
      from = dfn.name.to_sym
      to = [dfn[:on], (dfn[:private_name] || dfn.name)].compact.map(&:to_sym)
      mapping.add(from, to)
    end
  end
end

Instance Method Details

#add(from, to) ⇒ Object

from is a symbol attribute to is an 1 or 2 element array, depending on whether the attribute is ‘namespaced’, as it is with composite forms. eg, add(:phone_number, [:person, :phone])



69
70
71
72
73
# File 'lib/reform/form/active_model/model_validations.rb', line 69

def add(from, to)
  raise 'Mapping is not one-to-one' if @forward_map.has_key?(from) || @inverse_map.has_key?(to)
  @forward_map[from] = to
  @inverse_map[to] = from
end

#forward(attr) ⇒ Object



79
80
81
# File 'lib/reform/form/active_model/model_validations.rb', line 79

def forward(attr)
  @forward_map[attr]
end

#forward_image(attrs) ⇒ Object



75
76
77
# File 'lib/reform/form/active_model/model_validations.rb', line 75

def forward_image(attrs)
  @forward_map.values_at(*attrs).compact
end

#inverse(attr) ⇒ Object



87
88
89
# File 'lib/reform/form/active_model/model_validations.rb', line 87

def inverse(attr)
  @inverse_map[attr]
end

#inverse_image(attrs) ⇒ Object



83
84
85
# File 'lib/reform/form/active_model/model_validations.rb', line 83

def inverse_image(attrs)
  @inverse_map.values_at(*attrs).compact
end