Module: AttrValidator::Validator::ClassMethods

Defined in:
lib/attr_validator/validator.rb

Instance Method Summary collapse

Instance Method Details

#validate(method_name = nil, &block) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/attr_validator/validator.rb', line 29

def validate(method_name = nil, &block)
  self.custom_validations ||= []
  if block_given?
    self.custom_validations << block
  elsif method_name
    AttrValidator::ArgsValidator.is_symbol!(method_name, "validate method name")
    self.custom_validations << method_name
  else
    raise ArgumentError, "method name or block should be given for validate"
  end
end

#validate_associated(association_name, options) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/attr_validator/validator.rb', line 19

def validate_associated(association_name, options)
  AttrValidator::ArgsValidator.not_nil!(options[:validator], :validator)
  AttrValidator::ArgsValidator.is_class_or_symbol!(options[:validator], :validator)
  AttrValidator::ArgsValidator.is_symbol_or_block!(options[:if], :if) if options[:if]
  AttrValidator::ArgsValidator.is_symbol_or_block!(options[:unless], :unless) if options[:unless]

  self.associated_validations ||= {}
  self.associated_validations[association_name] = options
end

#validates(*args) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/attr_validator/validator.rb', line 9

def validates(*args)
  options = args.pop
  AttrValidator::ArgsValidator.is_hash!(options, "last argument")

  self.validations ||= {}
  args.each do |attr_name|
    add_validations(attr_name, options)
  end
end