Module: ActiveRecord::Validations

Extended by:
ActiveSupport::Concern
Includes:
ActiveModel::Validations
Defined in:
activerecord/lib/active_record/validations.rb,
activerecord/lib/active_record/validations/associated.rb,
activerecord/lib/active_record/validations/uniqueness.rb

Overview

Active Record Validations

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?.

Defined Under Namespace

Modules: ClassMethods Classes: AssociatedValidator, UniquenessValidator

Instance Method Summary (collapse)

Methods included from ActiveSupport::Concern

append_features, extended, included

Methods included from ActiveModel::Validations

#errors, #invalid?, #validates_with

Methods included from ActiveSupport::Callbacks

#run_callbacks

Instance Method Details

- (Object) 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.



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

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

- (Object) 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.



55
56
57
# File 'activerecord/lib/active_record/validations.rb', line 55

def save!(options={})
  perform_validations(options) ? super : raise(RecordInvalid.new(self))
end

- (Boolean) valid?(context = nil)

Runs all the validations within the specified context. Returns true if no errors are found, false 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.



67
68
69
70
71
# File 'activerecord/lib/active_record/validations.rb', line 67

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