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
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 lib/active_record/validations.rb, line 36 def save(options={}) perform_validations(options) ? super : false end
Attempts to save the record just like #save but will raise a
RecordInvalid exception instead of returning
false if the record is not valid.
# File lib/active_record/validations.rb, line 42 def save!(options={}) perform_validations(options) ? super : raise_record_invalid end
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.
# File lib/active_record/validations.rb, line 56 def valid?(context = nil) context ||= (new_record? ? :create : :update) output = super(context) errors.empty? && output end
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.
# File lib/active_record/validations.rb, line 72 def validate!(context = nil) valid?(context) || raise_record_invalid end
Protected Instance Methods
# File lib/active_record/validations.rb, line 78 def raise_record_invalid raise(RecordInvalid.new(self)) end