module Mongoid::Fields::Validators::Macro

def validate(klass, name, options)

Parameters:
  • options (Hash) -- The provided options.
  • name (Symbol) -- The field name.
  • klass (Class) -- The model class.

Other tags:
    Example: Validate the field definition. -
def validate(klass, name, options)
  validate_field_name(klass, name)
  validate_name_uniqueness(klass, name, options)
  validate_options(klass, name, options)
end

def validate_field_name(klass, name)

Other tags:
    Api: - private

Raises:
  • (Errors::InvalidField) - If the name is not allowed.

Parameters:
  • name (Symbol) -- The field name.
  • klass (Class) -- The model class.

Other tags:
    Example: Check the field name. -
def validate_field_name(klass, name)
  [name, "#{name}?".to_sym, "#{name}=".to_sym].each do |n|
    if Mongoid.destructive_fields.include?(n)
      raise Errors::InvalidField.new(klass, name, n)
    end
  end
end

def validate_name_uniqueness(klass, name, options)

Other tags:
    Api: - private

Raises:
  • (Errors::InvalidField) - If the name is not allowed.

Parameters:
  • options (Hash) -- The provided options.
  • name (Symbol) -- The field name.
  • klass (Class) -- The model class.

Other tags:
    Example: Check the field name. -
def validate_name_uniqueness(klass, name, options)
  if !options[:overwrite] && klass.fields.keys.include?(name.to_s)
    if Mongoid.duplicate_fields_exception
      raise Errors::InvalidField.new(klass, name, name)
    else
      Mongoid.logger.warn("Overwriting existing field #{name} in class #{klass.name}.") if Mongoid.logger
    end
  end
end

def validate_options(klass, name, options)

Raises:
  • (Errors::InvalidFieldOption) - If an option is invalid.

Parameters:
  • options (Hash) -- The provided options.
  • name (Symbol) -- The field name.
  • klass (Class) -- The model class.

Other tags:
    Example: Validate the field options. -

Other tags:
    Api: - private
def validate_options(klass, name, options)
  options.keys.each do |option|
    if !OPTIONS.include?(option) && !Fields.options.include?(option)
      raise Errors::InvalidFieldOption.new(klass, name, option, OPTIONS)
    end
    if option == :type && options[option] == Symbol
      Mongoid::Warnings.warn_symbol_type_deprecated
    end
  end
end

def validate_relation(klass, name, options = {})

Parameters:
  • options (Hash) -- The provided options.
  • name (Symbol) -- The field name.
  • klass (Class) -- The model class.

Other tags:
    Example: Validate the association definition. -
def validate_relation(klass, name, options = {})
  [name, "#{name}?".to_sym, "#{name}=".to_sym].each do |n|
    if Mongoid.destructive_fields.include?(n)
      raise Errors::InvalidRelation.new(klass, n)
    end
  end
end