Sha256: af61169276060ed6fb0d160b5e3d279187928d1b644279eb790f0b2c0caaa5bf

Contents?: true

Size: 987 Bytes

Versions: 4

Compression:

Stored size: 987 Bytes

Contents

module Rosebud
  class ParamsScope
    def initialize(controller, params, &block)
      @controller = controller
      @params = params
      @declared_params = []
      
      instance_eval(&block)
    end
    
    def requires(name, validations = {})
      name = name.to_sym
      validations.merge!({ presence: true })
      
      validate(name, @params[name], validations)
    end
    
    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
    
    private
    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
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rosebud-0.2.0 lib/rosebud/params_scope.rb
rosebud-0.1.2 lib/rosebud/params_scope.rb
rosebud-0.1.1 lib/rosebud/params_scope.rb
rosebud-0.1.0 lib/rosebud/params_scope.rb