Module: ParamsValidator::ValidParams::ClassMethods

Defined in:
lib/params_validator/valid_params.rb

Overview

inner module to define class methods

Instance Method Summary collapse

Instance Method Details

#get_rule(method) ⇒ Object

get the specified rule for a method



105
106
107
108
109
110
111
112
113
# File 'lib/params_validator/valid_params.rb', line 105

def get_rule(method)
  object_name = self.name
  key = "#{object_name}::#{method}"
  method_validation = validator.methods_loaded[key.to_sym]
  unless method_validation.nil?
    return method_validation.parameters
  end
  nil
end

#load_rules(rules) ⇒ Object

shortcut to validator.load_rules



121
122
123
# File 'lib/params_validator/valid_params.rb', line 121

def load_rules(rules)
  validator.load_rules(rules)
end

#validate_method(method = nil, &block) ⇒ Object

This method is used in classes to define which methods should be validated when called. i.e. validate_method :method1

validate_method [:method1, :method2]


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/params_validator/valid_params.rb', line 68

def validate_method(method=nil, &block)
  # get the fully qualified method name
  interface = self.name
  
  # cast to array if method is one symbol
  method.instance_of?(Symbol) and method = [method]

  # wrap each method
  method.each{|m|
    interface_method = [interface, m].join("::")
    
    if validator.has_method_rule?(interface_method)
      # already has a validation => delete it
      old_method = "#{m}_old"
      self.send :alias_method, *[m, old_method]
      remove_method("#{m}_old".to_sym)
    end

    # add validation rule to the specific method if a block is defined
    if block_given?
      validator.validation_rule(interface_method, &block)
    end

    # wrap old method with the previous validation
    old_method = "#{m}_old"
    self.send :alias_method, *[old_method, m]

    define_method(m) do |*args, &block|
      # validate parameters
      previous_validation(args, interface_method)
      # call method
      send(old_method, *args, &block)
    end
  }
end

#validatorObject

validator object



116
117
118
# File 'lib/params_validator/valid_params.rb', line 116

def validator
  @@validator ||= Validator.new
end