class LIVR::Rules::Meta::ListOfDifferentObjects
Public Class Methods
new(selector_field, livrs)
click to toggle source
# File lib/livr/rules/meta.rb, line 125 def initialize(selector_field, livrs) @selector_field = selector_field @validators = {} livrs.each do |selector_value, livr| @validators[selector_value] = Validator.new(livr).prepare end end
Public Instance Methods
call(objects, user_data, field_results)
click to toggle source
# File lib/livr/rules/meta.rb, line 133 def call(objects, user_data, field_results) return if is_no_value(objects) return 'FORMAT_ERROR' unless objects.is_a?(Array) results = [] errors = [] has_errors = false objects.each do |object| if !object.is_a?(Hash) || !object[@selector_field] || !@validators[ object[@selector_field] ] errors << 'FORMAT_ERROR' next end validator = @validators[ object[@selector_field] ] result = validator.validate(object) if result results << result errors << nil else has_errors = true errors << validator.get_errors results << nil end end if has_errors return errors else field_results << results return end end