Module: ActiveRecord::Validations
| Relationships & Source Files | |
| Namespace Children | |
| Modules: | |
| Extension / Inclusion / Inheritance Descendants | |
| Included In: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: | |
| Instance Chain: | |
| Defined in: | activerecord/lib/active_record/validations.rb, activerecord/lib/active_record/validations/absence.rb, activerecord/lib/active_record/validations/associated.rb, activerecord/lib/active_record/validations/length.rb, activerecord/lib/active_record/validations/numericality.rb, activerecord/lib/active_record/validations/presence.rb, activerecord/lib/active_record/validations/uniqueness.rb | 
Overview
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?.
::ActiveModel::Validations - Attributes & Methods
- ._validators rw
- #_validators readonly
- ._validators? ⇒ Boolean rw
- #_validators? ⇒ Boolean readonly
- #validation_context readonly
Class Method Summary
::ActiveModel::Naming - self
| param_key | Returns string to use for params names. | 
| plural | Returns the plural class name of a record or class. | 
| route_key | Returns string to use while generating route names. | 
| singular | Returns the singular class name of a record or class. | 
| singular_route_key | Returns string to use while generating route names. | 
| uncountable? | Identifies whether the class name of a record or class is uncountable. | 
::ActiveSupport::Concern - Extended
| class_methods | Define class methods from given block. | 
| included | Evaluate given block in context of base class, so that you can write class macros here. | 
| prepended | Evaluate given block in context of base class, so that you can write class macros here. | 
Instance Method Summary
- 
    
      #save(**options)  
    
    The validation process on save can be skipped by passing validate: false.
- 
    
      #save!(**options)  
    
    Attempts to save the record just like {ActiveRecord::Base#save} but will raise anRecordInvalidexception instead of returningfalseif the record is not valid.
- 
    
      #valid?(context = nil)  ⇒ Boolean 
      (also: #validate)
    
    Runs all the validations within the specified context. 
- 
    
      #validate(context = nil)  
    
    Alias for #valid?. 
::ActiveModel::Validations - Included
| #errors | Returns the  | 
| #invalid? | Performs the opposite of #valid?. | 
| #read_attribute_for_validation | Hook method defining how an attribute value should be retrieved. | 
| #valid? | Runs all the specified validations and returns  | 
| #validate | Alias for ActiveModel::Validations#valid?. | 
| #validate! | Runs all the validations within the specified context. | 
| #validates_with | Passes the record off to the class or classes specified and allows them to add errors based on more complex conditions. | 
| #raise_validation_error | |
Class Attribute Details
._validators (rw)
[ GitHub ]# File 'activemodel/lib/active_model/validations.rb', line 52
class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }
    ._validators?  ⇒ Boolean  (rw)
  
  [ GitHub ]
# File 'activemodel/lib/active_model/validations.rb', line 52
class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }
Instance Attribute Details
#_validators (readonly)
[ GitHub ]# File 'activemodel/lib/active_model/validations.rb', line 52
class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }
    #_validators?  ⇒ Boolean  (readonly)
  
  [ GitHub ]
# File 'activemodel/lib/active_model/validations.rb', line 52
class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }
#validation_context (rw)
[ GitHub ]# File 'activemodel/lib/active_model/validations.rb', line 48
attr_accessor :validation_context
Instance Method Details
#save(**options)
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.
# File 'activerecord/lib/active_record/validations.rb', line 46
def save(**) perform_validations() ? super : false end
#save!(**options)
Attempts to save the record just like {ActiveRecord::Base#save} but will raise an RecordInvalid exception instead of returning false if the record is not valid.
# File 'activerecord/lib/active_record/validations.rb', line 52
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.
Validations with no :on option will run no matter the context. Validations with some :on option will only run in the specified context.
# File 'activerecord/lib/active_record/validations.rb', line 66
def valid?(context = nil) context ||= default_validation_context output = super(context) errors.empty? && output end
#validate(context = nil)
Alias for #valid?.
# File 'activerecord/lib/active_record/validations.rb', line 72
alias_method :validate, :valid?