Class: KawaiiValidation::NonAttributedValidator

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations::HelperMethods
Defined in:
lib/kawaii_validation/non_attributed_validator.rb

Overview

validates do

presence_of :title, :if => -> { true }

end

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ NonAttributedValidator

Returns a new instance of NonAttributedValidator.



12
13
14
# File 'lib/kawaii_validation/non_attributed_validator.rb', line 12

def initialize(klass)
  @klass = klass
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *attributes) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/kawaii_validation/non_attributed_validator.rb', line 16

def method_missing(name, *attributes)
  if @klass.respond_to? "validates_#{name}"
    @klass.send "validates_#{name}", *attributes
  else
    key = "#{name.to_s.sub(/_of\Z/, '').camelize}Validator"
    validator = begin
      key.include?('::') ? key.constantize : @klass.const_get(key)
    rescue NameError
      raise ArgumentError, "Unknown validator: '#{key}'"
    end

    @klass.validates_with validator, _merge_attributes(attributes)
  end
end