module Mongoid::Fields::Validators::Macro
def validate(klass, name, options)
-
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)
- 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)
- 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)
-
(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 = {})
-
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