class Wallaby::ActiveRecord::ModelServiceProvider::Normalizer

Normalize the values for a model

Public Class Methods

new(model_decorator) click to toggle source

@param model_decorator [Wallaby::ModelDecorator]

# File lib/adapters/wallaby/active_record/model_service_provider/normalizer.rb, line 9
def initialize(model_decorator)
  @model_decorator = model_decorator
end

Public Instance Methods

normalize(params) click to toggle source

@param params [ActionController::Parameters]

# File lib/adapters/wallaby/active_record/model_service_provider/normalizer.rb, line 14
def normalize(params)
  params.each do |field_name, values|
    metadata =
      @model_decorator.metadata_of(field_name).presence || @model_decorator.form_metadata_of(field_name)
    type = metadata[:type].try(:[], /range|point|binary/)
    next unless type

    public_send "normalize_#{type}_values", params, field_name, values
  end
  params
end
normalize_binary_values(params, field_name, values) click to toggle source

Turn values into binary @param params [ActionController::Parameters] @param field_name [String] @param values [Object]

# File lib/adapters/wallaby/active_record/model_service_provider/normalizer.rb, line 48
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) click to toggle source

Turn values into points @param params [ActionController::Parameters] @param field_name [String] @param values [Array]

# File lib/adapters/wallaby/active_record/model_service_provider/normalizer.rb, line 39
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) click to toggle source

Turn values into range @param params [ActionController::Parameters] @param field_name [String] @param values [Array]

# File lib/adapters/wallaby/active_record/model_service_provider/normalizer.rb, line 30
def normalize_range_values(params, field_name, values)
  normalized = Array(values).map(&:presence).compact
  params[field_name] = (normalized.present? && values.length == 2) && (values.first...values.last) || nil
end