Module: Mongoid::Fields::Validators::Macro

Extended by:
Macro
Included in:
Macro
Defined in:
lib/mongoid/fields/validators/macro.rb

Overview

Validates the params passed to the field macro.

Constant Summary collapse

OPTIONS =
[
  :as,
  :default,
  :identity,
  :label,
  :localize,
  :fallbacks,
  :association,
  :pre_processed,
  :subtype,
  :type,
  :overwrite,
  :encrypt
]

Instance Method Summary collapse

Instance Method Details

#validate(klass, name, options) ⇒ Object

Validate the field definition.

Examples:

Validate the field definition.

Macro.validate(Model, :name, { localized: true })

Parameters:

  • klass (Class)

    The model class.

  • name (Symbol)

    The field name.

  • options (Hash)

    The provided options.



35
36
37
38
39
# File 'lib/mongoid/fields/validators/macro.rb', line 35

def validate(klass, name, options)
  validate_field_name(klass, name)
  validate_name_uniqueness(klass, name, options)
  validate_options(klass, name, options)
end

#validate_field_name(klass, name) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Determine if the field name is valid, if not raise an error.

Examples:

Check the field name.

Macro.validate_field_name(Model, :name)

Parameters:

  • klass (Class)

    The model class.

  • name (Symbol)

    The field name.

Raises:



68
69
70
71
72
73
74
# File 'lib/mongoid/fields/validators/macro.rb', line 68

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

#validate_relation(klass, name, options = {}) ⇒ Object

Validate the association definition.

Examples:

Validate the association definition.

Macro.validate(Model, :name)

Parameters:

  • klass (Class)

    The model class.

  • name (Symbol)

    The field name.

  • options (Hash) (defaults to: {})

    The provided options.



49
50
51
52
53
54
55
# File 'lib/mongoid/fields/validators/macro.rb', line 49

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