Sha256: f8834b9f7ad3ea66fb1dfc03a6a369bcc9cdc0316431cee1db07e535d1bb2b92

Contents?: true

Size: 568 Bytes

Versions: 5

Compression:

Stored size: 568 Bytes

Contents

# validate field contains the name of an existing class
class ExistingClassValidator < ActiveModel::EachValidator

  # :call-seq:
  # validate_each :record, :attr, :value
  #
  # validates that value is the name of an existing class

  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

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
importable_attachments-0.0.18 app/validators/existing_class_validator.rb
importable_attachments-0.0.17 app/validators/existing_class_validator.rb
importable_attachments-0.0.15 app/validators/existing_class_validator.rb
importable_attachments-0.0.14 app/validators/existing_class_validator.rb
importable_attachments-0.0.13 app/validators/existing_class_validator.rb