Class: Wallaby::ActiveRecord::ModelServiceProvider::Normalizer

Inherits:
Object
  • Object
show all
Defined in:
lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb

Overview

Normalizer

Instance Method Summary collapse

Constructor Details

#initialize(model_decorator) ⇒ Normalizer

Returns a new instance of Normalizer.



6
7
8
# File 'lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb', line 6

def initialize(model_decorator)
  @model_decorator = model_decorator
end

Instance Method Details

#normalize(params) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb', line 10

def normalize(params)
  params.each do |field_name, values|
     = @model_decorator.fields[field_name] || EMPTY_HASH
    type = ([:type] || EMPTY_STRING)[/range|point|binary/]
    next unless type
    send "normalize_#{type}_values", params, field_name, values
  end
end

#normalize_binary_values(params, field_name, values) ⇒ Object



34
35
36
37
38
# File 'lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb', line 34

def normalize_binary_values(params, field_name, values)
  params[field_name] =
    values.is_a?(::ActionDispatch::Http::UploadedFile) &&
    values.read || nil
end

#normalize_point_values(params, field_name, values) ⇒ Object



27
28
29
30
31
32
# File 'lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb', line 27

def normalize_point_values(params, field_name, values)
  normalized = Array(values).map(&:presence).compact
  params[field_name] =
    normalized.present? &&
    values.map(&:to_f) || nil
end

#normalize_range_values(params, field_name, values) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb', line 19

def normalize_range_values(params, field_name, values)
  normalized = Array(values).map(&:presence).compact
  params[field_name] =
    if normalized.present? && values.length == 2
      values.first...values.last
    end
end