module ActiveRecord::Validations

Included modules:
ActiveModel::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

save(options={}) Show source
# File activerecord/lib/active_record/validations.rb, line 36
def save(options={})
  perform_validations(options) ? super : false
end

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.

Calls superclass method
save!(options={}) Show source
# File activerecord/lib/active_record/validations.rb, line 42
def save!(options={})
  perform_validations(options) ? super : raise_record_invalid
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.

Calls superclass method
valid?(context = nil) Show source
# File activerecord/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, 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.

Calls superclass method ActiveModel::Validations#valid?
Also aliased as: validate
validate(context = nil)
Alias for: valid?
validate!(context = nil) Show source
# File activerecord/lib/active_record/validations.rb, line 72
def validate!(context = nil)
  valid?(context) || raise_record_invalid
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.

Protected Instance Methods

raise_record_invalid() Show source
# File activerecord/lib/active_record/validations.rb, line 78
def raise_record_invalid
  raise(RecordInvalid.new(self))
end

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.