Active Record Validations

Active Record includes the majority of its validations from ActiveModel::Validationsall of which accept the :onargument to define the context where the validations are active. Active Record will always supply either the context of :createor :updatedependent on whether the model is a new_record?.

Namespace
Methods
S
V
Included Modules
Instance Public methods
save(options={})

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

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

Attempts to save the record just like #save but will raise a RecordInvalidexception instead of returning falseif the record is not valid.

# File activerecord/lib/active_record/validations.rb, line 56
def save!(options={})
  perform_validations(options) ? super : raise(RecordInvalid.new(self))
end
valid?(context = nil)

Runs all the validations within the specified context. Returns trueif no errors are found, falseotherwise.

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

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

# File activerecord/lib/active_record/validations.rb, line 68
def valid?(context = nil)
  context ||= (new_record? ? :create : :update)
  output = super(context)
  errors.empty? && output
end