Module: ActiveRecord::Validations
- Extended by:
- ActiveSupport::Concern
- Included in:
- Base
- Defined in:
- lib/active_record/validations.rb,
lib/active_record/validations/length.rb,
lib/active_record/validations/absence.rb,
lib/active_record/validations/presence.rb,
lib/active_record/validations/associated.rb,
lib/active_record/validations/uniqueness.rb,
lib/active_record/validations/numericality.rb
Overview
Active Record Validations
Active Record includes the majority of its validations from ActiveModel::Validations.
In Active Record, all validations are performed on save by default. Validations accept the :on
argument to define the context where the validations are active. Active Record will pass either the context of :create
or :update
depending on whether the model is a new_record?.
Defined Under Namespace
Modules: ClassMethods Classes: AbsenceValidator, AssociatedValidator, LengthValidator, NumericalityValidator, PresenceValidator, UniquenessValidator
Instance Method Summary collapse
-
#custom_validation_context? ⇒ Boolean
:nodoc:.
-
#save(**options) ⇒ Object
The validation process on save can be skipped by passing
validate: false
. -
#save!(**options) ⇒ Object
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. -
#valid?(context = nil) ⇒ Boolean
(also: #validate)
Runs all the validations within the specified context.
Instance Method Details
#custom_validation_context? ⇒ Boolean
:nodoc:
77 78 79 |
# File 'lib/active_record/validations.rb', line 77 def custom_validation_context? # :nodoc: validation_context && [:create, :update].exclude?(validation_context) end |
#save(**options) ⇒ Object
The validation process on save can be skipped by passing validate: false
. The validation context can be changed by passing context: context
. The regular ActiveRecord::Base#save method is replaced with this when the validations module is mixed in, which it is by default.
47 48 49 |
# File 'lib/active_record/validations.rb', line 47 def save(**) perform_validations() ? super : false end |
#save!(**options) ⇒ Object
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.
53 54 55 |
# File 'lib/active_record/validations.rb', line 53 def save!(**) perform_validations() ? super : raise_validation_error end |
#valid?(context = nil) ⇒ Boolean Also known as: validate
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. If the argument is an array of contexts, post.valid?([:create, :update])
, the validations are run within multiple contexts.
Validations with no :on
option will run no matter the context. Validations with some :on
option will only run in the specified context.
69 70 71 72 73 |
# File 'lib/active_record/validations.rb', line 69 def valid?(context = nil) context ||= default_validation_context output = super(context) errors.empty? && output end |