Class: Coradoc::Validation::Rules::Count

Inherits:
Coradoc::Validation::Rule show all
Defined in:
lib/coradoc/validation.rb

Overview

Count validation for arrays/collections

Instance Attribute Summary

Attributes inherited from Coradoc::Validation::Rule

#name, #options

Instance Method Summary collapse

Methods inherited from Coradoc::Validation::Rule

#initialize

Constructor Details

This class inherits a constructor from Coradoc::Validation::Rule

Instance Method Details

#validate(element, _context = {}) ⇒ Object



265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
# File 'lib/coradoc/validation.rb', line 265

def validate(element, _context = {})
  field = options[:field]
  value = field_value(element, field)

  return [] if value.nil?

  errors = []
  count = value.is_a?(Enumerable) ? value.count : 0

  errors << "#{field} must have at least #{options[:min]} items" if options[:min] && count < options[:min]

  errors << "#{field} must have at most #{options[:max]} items" if options[:max] && count > options[:max]

  errors
end