# module ActiveRecord::Validations

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

### Public Instance Methods

save(options = {}) click to toggle source

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.

Calls superclass method

    # File lib/active_record/validations.rb, line 43
    def save(options = {})
      perform_validations(options) ? super : false
    end

save!(options = {}) click to toggle source

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

Calls superclass method

    # File lib/active_record/validations.rb, line 49
    def save!(options = {})
      perform_validations(options) ? super : raise_validation_error
    end

valid?(context = nil) click to toggle source

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.

Calls superclass method

    # File lib/active_record/validations.rb, line 63
    def valid?(context = nil)
      context ||= default_validation_context
      output = super(context)
      errors.empty? && output
    end

Also aliased as: validate
validate(context = nil)
Alias for: valid?

### Private Instance Methods

default_validation_context() click to toggle source

    # File lib/active_record/validations.rb, line 73
    def default_validation_context
      new_record? ? :create : :update
    end

perform_validations(options = {}) click to toggle source

    # File lib/active_record/validations.rb, line 81
    def perform_validations(options = {})
      options[:validate] == false || valid?(options[:context])
    end

raise_validation_error() click to toggle source

    # File lib/active_record/validations.rb, line 77
    def raise_validation_error
      raise(RecordInvalid.new(self))
    end