class Rosebud::ParamsScope

Public Class Methods

new(controller, params, &block) click to toggle source
# File lib/rosebud/params_scope.rb, line 3
def initialize(controller, params, &block)
  @controller = controller
  @params = params
  @declared_params = []
  
  instance_eval(&block)
end

Public Instance Methods

optional(name, options = {}) click to toggle source
# File lib/rosebud/params_scope.rb, line 18
def optional(name, options = {})
  name = name.to_sym
  if (@params[name].nil? || @params[name] == '') && options.has_key?(:default)
    @params[name] = options.delete(:default)
  end
  validate(name, @params[name], options)
end
requires(name, validations = {}) click to toggle source
# File lib/rosebud/params_scope.rb, line 11
def requires(name, validations = {})
  name = name.to_sym
  validations.merge!({ presence: true })
  
  validate(name, @params[name], validations)
end

Private Instance Methods

validate(attribute, value, validations) click to toggle source
# File lib/rosebud/params_scope.rb, line 27
def validate(attribute, value, validations)
  validations.each do |type, options|
    validator_class = Validations.validators[type]
    raise("Validator #{type} is not registered...") unless validator_class
    validator_class.new.validate_param(attribute, value, options)
  end
end