class Subvalid::ValidationResult
Attributes
children[R]
errors[R]
Public Class Methods
new()
click to toggle source
# File lib/subvalid/validation_result.rb, line 5 def initialize @errors = [] @children = {} end
Public Instance Methods
[](attribute)
click to toggle source
# File lib/subvalid/validation_result.rb, line 18 def [](attribute) children[attribute] end
add_error(error)
click to toggle source
# File lib/subvalid/validation_result.rb, line 14 def add_error(error) errors << error end
flatten(parent_attributes=[])
click to toggle source
# File lib/subvalid/validation_result.rb, line 40 def flatten(parent_attributes=[]) # TODO make this more flexible than just hardcoded format flat_errors = errors.map{|error| if parent_attributes.empty? error else human_keys = parent_attributes.map{|a| a.to_s.gsub('_', ' ')} [human_keys.join(", "), error].join(": ") end } children.each do |attribute, child| flat_errors += child.flatten(parent_attributes + [attribute]) end flat_errors end
merge_child!(attribute, result)
click to toggle source
# File lib/subvalid/validation_result.rb, line 22 def merge_child!(attribute, result) child = children[attribute] if child child.merge!(result) else children[attribute] = result end end
to_h()
click to toggle source
# File lib/subvalid/validation_result.rb, line 31 def to_h hash = {} hash[:errors] = errors.dup unless errors.empty? children.each do |attribute, child| hash[attribute] = child.to_h unless child.valid? end hash end
valid?()
click to toggle source
# File lib/subvalid/validation_result.rb, line 10 def valid? errors.empty? && children.values.all?(&:valid?) end
Protected Instance Methods
merge!(result)
click to toggle source
# File lib/subvalid/validation_result.rb, line 57 def merge!(result) @errors += result.errors children.merge!(result.children){|key, old_child, new_child| old_child.merge!(new_child) old_child } end