class PermittedParams

Public Class Methods

define(symbol, &block) click to toggle source
# File lib/permitted_params.rb, line 24
def self.define(symbol, &block)
  define_method("#{symbol}_attributes") do
    attrs = Attributes.new(self)
    attrs.instance_eval(&block)
    attrs.attributes
  end
end
setup(&block) click to toggle source
# File lib/permitted_params.rb, line 32
def self.setup(&block)
  block.call(Configurator.new)
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/permitted_params.rb, line 2
def method_missing(method, *args, &block)
  if method.match /_attributes\z/
    super
  else
    params_hash = args.length > 0 ? args[0] : params[method]
    permit(params_hash, method)
  end
end
permit(params, as_type) click to toggle source
# File lib/permitted_params.rb, line 11
def permit(params, as_type)
  attrs_method = "#{as_type}_attributes".to_sym
  permitted_params = send(attrs_method)
  begin
    params.try(:permit, *permitted_params)
  rescue => e
    Rails.logger.warn "Exception caught in PermittedParams"
    Rails.logger.warn "params: #{params.inspect}"
    Rails.logger.warn "permitted_params: #{permitted_params.inspect}"
    raise e
  end
end