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
# File activerecord/lib/active_record/validations.rb, line 43 def save(options={}) perform_validations(options) ? super : false end
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.
# File activerecord/lib/active_record/validations.rb, line 49 def save!(options={}) perform_validations(options) ? super : raise_validation_error end
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.
# File activerecord/lib/active_record/validations.rb, line 63 def valid?(context = nil) context ||= default_validation_context output = super(context) errors.empty? && output 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.
Protected Instance Methods
# File activerecord/lib/active_record/validations.rb, line 73 def default_validation_context new_record? ? :create : :update end
# File activerecord/lib/active_record/validations.rb, line 77 def raise_validation_error raise(RecordInvalid.new(self)) end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.