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?.
Instance Public methods
save(**options) Link
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.
Source: show
# File activerecord/lib/active_record/validations.rb, line 48 def save(**options) perform_validations(options) ? super : false end
save!(**options) Link
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.
Source: show
# File activerecord/lib/active_record/validations.rb, line 54 def save!(**options) perform_validations(options) ? super : raise_validation_error end
valid?(context = nil) Link
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.
Source: show
# File activerecord/lib/active_record/validations.rb, line 70 def valid?(context = nil) context ||= default_validation_context output = super(context) errors.empty? && output end