Class: ActiveModel::Validations::SerializedValidator

Inherits:
EachValidator
  • Object
show all
Defined in:
lib/validates_serialized/validators/serialized_validator.rb

Overview

Special case of EachValidator that exists to allow other EachValidators to validate individual properties of a serialized object

Direct Known Subclasses

ArrayValidator, HashValidator

Instance Method Summary collapse

Methods inherited from EachValidator

#validate_each_in_array

Constructor Details

#initialize(*args, &block) ⇒ SerializedValidator

:nodoc:



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/validates_serialized/validators/serialized_validator.rb', line 6

def initialize(*args, &block)
  #TODO: Need a method for extracting serialized_attributes
  @serialized_attributes = nil
  options = args.extract_options!
  @validators = []
  args.first.each do |klass|
    validator = klass.new(options.dup, &block)
    @validators << validator
  end
  super(options)
end

Instance Method Details

#validate(record) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/validates_serialized/validators/serialized_validator.rb', line 18

def validate(record)
  attributes.each do |attribute|
    serialized = record.read_attribute_for_validation(attribute)
    type_check!(serialized)
    validate_serialized(record, attribute, serialized)
  end
end

#validate_each(record, attribute, value) ⇒ Object



26
27
28
29
30
# File 'lib/validates_serialized/validators/serialized_validator.rb', line 26

def validate_each(record, attribute, value)
  @validators.each do |validator|
    validator.validate_each(record, attribute, value)
  end
end