123456789_123456789_123456789_123456789_123456789_

Module: ActiveRecord::Validations

Relationships & Source Files
Namespace Children
Modules:
Extension / Inclusion / Inheritance Descendants
Included In:
Base, ActiveRecord::InternalMetadata, ActiveRecord::SchemaMigration
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Defined in: activerecord/lib/active_record/validations.rb,
activerecord/lib/active_record/validations/absence.rb,
activerecord/lib/active_record/validations/associated.rb,
activerecord/lib/active_record/validations/length.rb,
activerecord/lib/active_record/validations/presence.rb,
activerecord/lib/active_record/validations/uniqueness.rb

Overview

Active Record includes the majority of its validations from ::ActiveModel::Validations all of which accept the :on argument to define the context where the validations are active. Active Record will always supply either the context of :create or :update dependent on whether the model is a new_record?.

::ActiveModel::Validations - Attributes & Methods

Class Method Summary

::ActiveModel::Naming - self

param_key

Returns string to use for params names.

plural

Returns the plural class name of a record or class.

route_key

Returns string to use while generating route names.

singular

Returns the singular class name of a record or class.

singular_route_key

Returns string to use while generating route names.

uncountable?

Identifies whether the class name of a record or class is uncountable.

::ActiveSupport::Concern - Extended

Instance Method Summary

::ActiveModel::Validations - Included

#errors

Returns the Errors object that holds all information about attribute error messages.

#invalid?

Performs the opposite of #valid?.

#read_attribute_for_validation

Hook method defining how an attribute value should be retrieved.

#valid?

Runs all the specified validations and returns true if no errors were added otherwise false.

#validate
#validate!

Runs all the validations within the specified context.

#validates_with

Passes the record off to the class or classes specified and allows them to add errors based on more complex conditions.

#raise_validation_error

Class Attribute Details

._validators (rw)

[ GitHub ]

  
# File 'activemodel/lib/active_model/validations.rb', line 54

class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }

._validators?Boolean (rw)

[ GitHub ]

  
# File 'activemodel/lib/active_model/validations.rb', line 54

class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }

Instance Attribute Details

#_validators (readonly)

[ GitHub ]

  
# File 'activemodel/lib/active_model/validations.rb', line 54

class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }

#_validators?Boolean (readonly)

[ GitHub ]

  
# File 'activemodel/lib/active_model/validations.rb', line 54

class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }

#validation_context (rw)

[ GitHub ]

  
# File 'activemodel/lib/active_model/validations.rb', line 50

attr_accessor :validation_context

Instance Method Details

#save(options = {})

The validation process on save can be skipped by passing validate: false. The regular {ActiveRecord::Base#save} method is replaced with this when the validations module is mixed in, which it is by default.

[ GitHub ]

  
# File 'activerecord/lib/active_record/validations.rb', line 45

def save(options = {})
  perform_validations(options) ? super : false
end

#save!(options = {})

Attempts to save the record just like {ActiveRecord::Base#save} but will raise an RecordInvalid exception instead of returning false if the record is not valid.

[ GitHub ]

  
# File 'activerecord/lib/active_record/validations.rb', line 51

def save!(options = {})
  perform_validations(options) ? super : raise_validation_error
end

#valid?(context = nil) ⇒ Boolean Also known as: #validate

Runs all the validations within the specified context. Returns true if no errors are found, false otherwise.

Aliased as #validate.

If the argument is false (default is nil), the context is set to :create if new_record? is true, and to :update if it is not.

Validations with no :on option will run no matter the context. Validations with some :on option will only run in the specified context.

[ GitHub ]

  
# File 'activerecord/lib/active_record/validations.rb', line 65

def valid?(context = nil)
  context ||= default_validation_context
  output = super(context)
  errors.empty? && output
end

#validate(context = nil)

Alias for #valid?.

[ GitHub ]

  
# File 'activerecord/lib/active_record/validations.rb', line 71

alias_method :validate, :valid?