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



256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
# File 'lib/coradoc/validation.rb', line 256

def validate(element, _context = {})
  field = options[:field]
  value = element.send(field) if element.respond_to?(field)

  return [] if value.nil?

  errors = []
  count = value.respond_to?(:count) ? 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