class Filterameter::ParametersBase

Parameters

Class Parameters is sub-classed to provide controller-specific validations.

Public Class Methods

add_validation(parameter_name, validations) click to toggle source
# File lib/filterameter/parameters_base.rb, line 25
def self.add_validation(parameter_name, validations)
  attr_accessor parameter_name

  default_options = { allow_nil: true }
  validations.each do |validation|
    validates parameter_name, default_options.merge(validation)
  end
end
build_sub_class(declarations) click to toggle source
# File lib/filterameter/parameters_base.rb, line 13
def self.build_sub_class(declarations)
  Class.new(self).tap do |sub_class|
    declarations.select(&:validations?).each do |declaration|
      sub_class.add_validation(declaration.parameter_name, declaration.validations)
    end
  end
end
name() click to toggle source
# File lib/filterameter/parameters_base.rb, line 21
def self.name
  'ControllerParameters'
end
new(attributes) click to toggle source
# File lib/filterameter/parameters_base.rb, line 34
def initialize(attributes)
  attributes.each { |k, v| assign_attribute(k, v) }
end

Private Instance Methods

assign_attribute(key, value) click to toggle source
# File lib/filterameter/parameters_base.rb, line 40
def assign_attribute(key, value)
  setter = :"#{key}="
  public_send(setter, value) if respond_to?(setter)
end