module ParamsFor::Connectors::Glue

Private Instance Methods

params_for(name, options = {}) click to toggle source

Strong params checker

@param name [Symbol] camelcased validator class name @param options [Hash] optional @option options [Boolean] :class class of the validator @return [Hash]

# File lib/params_for/connectors/glue.rb, line 33
def params_for(name, options = {})
  instance_var_name = "@#{name.to_s}_params"
  instance_var = instance_variable_get(instance_var_name)
  return instance_var if instance_var.present?

  if options[:class]
    validator_klass = options[:class]
  else
    validator_name = "ParamsFor::#{name.to_s.classify}"
    validator_klass = validator_name.constantize
  end

  validator = validator_klass.new(params)

  unless validator.valid?
    render status: :bad_request, json: validator.errors.to_json and return false
  end

  instance_variable_set(instance_var_name, validator.to_params)
end