Class: ArrayMembersValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
app/validators/array_members_validator.rb

Overview

ArrayMembersValidator

Custom validator that checks if validated attribute contains non empty array, which every element is an instances of :member_class

Example:

class Config::Root < ActiveRecord::Base
  validates :nodes, member_class: Config::Node
end

Instance Method Summary collapse

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



16
17
18
19
20
# File 'app/validators/array_members_validator.rb', line 16

def validate_each(record, attribute, value)
  if !value.is_a?(Array) || value.empty? || value.any? { |child| !child.instance_of?(options[:member_class]) }
    record.errors.add(attribute, _("should be an array of %{object_name} objects") % { object_name: options.fetch(:object_name, attribute) })
  end
end