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
.
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?.
::ActiveModel::Validations
- Attributes & Methods
- ._validators rw
- #_validators readonly
- ._validators? ⇒ Boolean rw
- #_validators? ⇒ Boolean readonly
-
#validation_context
readonly
Returns the context when running validations.
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 anRecordInvalid
exception instead of returningfalse
if 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 71
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 71
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 71
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 71
class_attribute :_validators, instance_writer: false, default: Hash.new { |h, k| h[k] = [] }
#validation_context (rw)
Returns the context when running validations.
This is useful when running validations except a certain context (opposite to the on
option).
class Person
include ActiveModel::Validations
attr_accessor :name
validates :name, presence: true, if: -> { validation_context != :custom }
end
person = Person.new
person.valid? #=> false
person.valid?(:new) #=> false
person.valid?(:custom) #=> true
# File 'activemodel/lib/active_model/validations.rb', line 49
rdoc_method :method: 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 48
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 54
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.
# File 'activerecord/lib/active_record/validations.rb', line 70
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 76
alias_method :validate, :valid?