Class: ExistingClassValidator

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

Overview

validate field contains the name of an existing class

Instance Method Summary collapse

Instance Method Details

#validate_each(record, attr, value) ⇒ Object

:call-seq: validate_each :record, :attr, :value

validates that value is the name of an existing class



9
10
11
12
13
14
15
# File 'app/validators/existing_class_validator.rb', line 9

def validate_each(record, attr, value)
  types = value.split(/::/).map(&:to_sym)
  item_type_result = types.inject(Module) do |constant, name|
    constant.const_get(name) if constant && constant.constants.include?(name)
  end
  record.errors[attr] << 'unknown module or class' unless item_type_result.present?
end