Module: Mongoid::Fields::Validators::Macro
| Relationships & Source Files | |
| Defined in: | lib/mongoid/fields/validators/macro.rb |
Overview
Validates the params passed to the field macro.
Constant Summary
-
OPTIONS =
# File 'lib/mongoid/fields/validators/macro.rb', line 10%i[ as default identity label localize fallbacks association pre_processed subtype type overwrite encrypt ]
Instance Method Summary
-
#validate(klass, name, options)
Validate the field definition.
-
#validate_field_name(klass, name)
Internal use only
Internal use only
Determine if the field name is valid, if not raise an error.
-
#validate_relation(klass, name, _options = {})
Validate the association definition.
-
#validate_name_uniqueness(klass, name, options)
private
Internal use only
Internal use only
Determine if the field name is unique, if not raise an error.
-
#validate_options(klass, name, options)
private
Internal use only
Internal use only
Validate that the field options are allowed.
Instance Method Details
#validate(klass, name, options)
Validate the field definition.
# File 'lib/mongoid/fields/validators/macro.rb', line 33
def validate(klass, name, ) validate_field_name(klass, name) validate_name_uniqueness(klass, name, ) (klass, name, ) end
#validate_field_name(klass, name)
This method is for internal use only.
Determine if the field name is valid, if not raise an error.
# File 'lib/mongoid/fields/validators/macro.rb', line 64
def validate_field_name(klass, name) [ name, :"#{name}?", :"#{name}=" ].each do |n| raise Errors::InvalidField.new(klass, name, n) if Mongoid.destructive_fields.include?(n) end end
#validate_name_uniqueness(klass, name, options) (private)
This method is for internal use only.
Determine if the field name is unique, if not raise an error.
# File 'lib/mongoid/fields/validators/macro.rb', line 84
def validate_name_uniqueness(klass, name, ) return unless ![:overwrite] && klass.fields.keys.include?(name.to_s) raise Errors::InvalidField.new(klass, name, name) if Mongoid.duplicate_fields_exception Mongoid.logger.warn("Overwriting existing field #{name} in class #{klass.name}.") if Mongoid.logger end
#validate_options(klass, name, options) (private)
This method is for internal use only.
Validate that the field options are allowed.
# File 'lib/mongoid/fields/validators/macro.rb', line 103
def (klass, name, ) .keys.each do |option| if !OPTIONS.include?(option) && !Fields..include?(option) raise Errors::InvalidFieldOption.new(klass, name, option, OPTIONS) end Mongoid::Warnings.warn_symbol_type_deprecated if option == :type && [option] == Symbol end end
#validate_relation(klass, name, _options = {})
Validate the association definition.
# File 'lib/mongoid/fields/validators/macro.rb', line 47
def validate_relation(klass, name, = {}) [ name, :"#{name}?", :"#{name}=" ].each do |n| raise Errors::InvalidRelation.new(klass, n) if Mongoid.destructive_fields.include?(n) end end