123456789_123456789_123456789_123456789_123456789_

Module: ActiveRecord::Validations

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::HelperMethods - self

#validates_absence_of

Validates that the specified attributes are blank (as defined by Object#blank?).

#validates_acceptance_of

Encapsulates the pattern of wanting to validate the acceptance of a terms of service check box (or similar agreement).

#validates_confirmation_of

Encapsulates the pattern of wanting to validate a password or email address field with a confirmation.

#validates_exclusion_of

Validates that the value of the specified attribute is not in a particular enumerable object.

#validates_format_of

Validates whether the value of the specified attribute is of the correct form, going by the regular expression provided.

#validates_inclusion_of

Validates whether the value of the specified attribute is available in a particular enumerable object.

#validates_length_of

Validates that the specified attribute matches the length restrictions supplied.

#validates_numericality_of

Validates whether the value of the specified attribute is numeric by trying to convert it to a float with Kernel.Float (if only_integer is false) or applying it to the regular expression /\A[+\-]?\d+\Z/ (if only_integer is set to true).

#validates_presence_of

Validates that the specified attributes are not blank (as defined by Object#blank?).

#validates_size_of

::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
#validates_with

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

Class Attribute Details

._validators (rw)

[ GitHub ]

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

class_attribute :_validators, instance_writer: false

._validators?Boolean (rw)

[ GitHub ]

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

class_attribute :_validators, instance_writer: false

Instance Attribute Details

#_validators (readonly)

[ GitHub ]

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

class_attribute :_validators, instance_writer: false

#_validators?Boolean (readonly)

[ GitHub ]

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

class_attribute :_validators, instance_writer: false

#validation_context (rw)

[ GitHub ]

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

attr_accessor :validation_context

Instance Method Details

#save(options = {})

The validation process on save can be skipped by passing validate: false. The regular 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 36

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

#save!(options = {})

Attempts to save the record just like Base#save but will raise a RecordInvalid exception instead of returning false if the record is not valid.

[ GitHub ]

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

def save!(options={})
  perform_validations(options) ? super : raise_record_invalid
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 56

def valid?(context = nil)
  context ||= (new_record? ? :create : :update)
  output = super(context)
  errors.empty? && output
end

#validate(context = nil)

Alias for #valid?.

[ GitHub ]

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

alias_method :validate, :valid?

#validate!(context = nil)

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

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 72

def validate!(context = nil)
  valid?(context) || raise_record_invalid
end