Module: ActiveEvent::Validations::RegisterMethods

Defined in:
lib/active_event/validations.rb

Instance Method Summary collapse

Instance Method Details

#skip_validate(*args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/active_event/validations.rb', line 12

def skip_validate(*args)
  options = args.extract_options!
  if options.key?(:on)
    options = options.dup
    options[:if] = Array(options[:if])
    options[:if].unshift("validation_context == :#{options[:on]}")
  end
  args << options
  skip_callback(:validate, *args)
end

#skip_validates(*attributes) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/active_event/validations.rb', line 23

def skip_validates(*attributes)
  defaults = attributes.extract_options!.dup
  validations = defaults.slice!(*_validates_default_keys)

  return if attributes.empty?
  return if validations.empty?

  defaults[:attributes] = attributes

  validations.each do |key, options|
    next unless options
    key = "#{key.to_s.camelize}Validator"

    begin
      validator = key.include?('::') ? key.constantize : const_get(key)
    rescue NameError
      raise ArgumentError, "Unknown validator: '#{key}'"
    end

    skip_validates_with(validator, defaults.merge(_parse_validates_options(options)))
  end
end

#skip_validates_with(*args) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/active_event/validations.rb', line 46

def skip_validates_with(*args)
  options = args.extract_options!
  args.each do |klass|
    validator = klass.new(options)

    if validator.respond_to?(:attributes) && !validator.attributes.empty?
      validator.attributes.each do |attribute|
        _validators[attribute.to_sym].reject! { |x| x.instance_of? klass } if _validators.key? attribute.to_sym
      end
    else
      _validators[nil].reject! { |x| x.instance_of? klass }
    end

    skip_validate(validator, options)
  end
end

#validation_target(target) ⇒ Object



63
64
65
# File 'lib/active_event/validations.rb', line 63

def validation_target(target)
  ValidationsRegistry.register self, target
end