module RequestParamsValidation::Params
Public Class Methods
filter!(definition, params)
click to toggle source
# File lib/request_params_validation/params.rb, line 18 def self.filter!(definition, params) extra_keys = [:controller, :action] # Keys added by Rails filter_params(definition, params, extra_keys).tap do |filtered_params| filtered_params.permit! if filtered_params.respond_to?(:permit!) end end
validate!(definition, params)
click to toggle source
# File lib/request_params_validation/params.rb, line 8 def self.validate!(definition, params) definition.each do |param_definition| next if param_definition.skip?(params) validate_and_coerce_param(param_definition, params) end params end
Private Class Methods
filter_params(definition, params, extra_keys = [])
click to toggle source
# File lib/request_params_validation/params.rb, line 42 def self.filter_params(definition, params, extra_keys = []) return unless params return params if definition.empty? params_keys = definition.map do |param_definition| next if param_definition.skip?(params) key = param_definition.rename? ? param_definition.rename_as : param_definition.key if param_definition.sub_definition filter_params(param_definition.sub_definition, params[key]) end key end.compact params_keys += extra_keys if params.is_a?(Array) params.map { |param| param.slice!(*params_keys) } else params.slice!(*params_keys) end params end
validate_and_coerce_param(param_definition, params)
click to toggle source
# File lib/request_params_validation/params.rb, line 26 def self.validate_and_coerce_param(param_definition, params) key = param_definition.key value = params[key] value = Validator.new(param_definition, value).validate_and_coerce value = Converter.apply_transformation(param_definition, value) if param_definition.transform? if param_definition.rename? params.delete(key) params[param_definition.rename_as] = value else params[key] = value end end