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