| Module | CustomValidations::SingletonValidateable |
| In: |
lib/custom_validations.rb
|
# File lib/custom_validations.rb, line 16
16: def metaclass
17: @metaclass ||= class << self; self; end
18: end
# File lib/custom_validations.rb, line 46
46: def method_missing(sym, *args, &block)
47: if /\Avalidates_/ =~ sym.to_s
48: metaclass.__send__(sym, *args, &block)
49: else
50: super
51: end
52: end
copy from activerecord-1.15.3/lib/active_record/validations.rb and add meta_validations
# File lib/custom_validations.rb, line 22
22: def run_validations(validation_method)
23: validations = self.class.read_inheritable_attribute(validation_method.to_sym)
24: meta_validations = metaclass.read_inheritable_attribute(validation_method.to_sym)
25: if validations.nil? && meta_validations.nil? then return end
26: validations = [validations, meta_validations].flatten.compact
27: validations.each do |validation|
28: if validation.is_a?(Symbol)
29: self.send(validation)
30: elsif validation.is_a?(String)
31: eval(validation, binding)
32: elsif validation_block?(validation)
33: validation.call(self)
34: elsif validation_class?(validation, validation_method)
35: validation.send(validation_method, self)
36: else
37: raise(
38: ActiveRecordError,
39: "Validations need to be either a symbol, string (to be eval'ed), proc/method, or " +
40: "class implementing a static validation method"
41: )
42: end
43: end
44: end