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?
.
- MODULE ActiveRecord::Validations::ClassMethods
- CLASS ActiveRecord::Validations::AssociatedValidator
- CLASS ActiveRecord::Validations::UniquenessValidator
- P
- S
- V
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.
Source: show
# File activerecord/lib/active_record/validations.rb, line 49 def save(options={}) perform_validations(options) ? super : false end
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.
Source: show
# File activerecord/lib/active_record/validations.rb, line 55 def save!(options={}) perform_validations(options) ? super : raise(RecordInvalid.new(self)) end
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.
Source: show
# 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
Source: show
# File activerecord/lib/active_record/validations.rb, line 75 def perform_validations(options={}) perform_validation = options[:validate] != false perform_validation ? valid?(options[:context]) : true end