diff --git a/activemodel/lib/active_model/validations.rb b/activemodel/lib/active_model/validations.rb
index 5e2c7b411d..98af88b5a0 100644
--- a/activemodel/lib/active_model/validations.rb
+++ b/activemodel/lib/active_model/validations.rb
@@ -71,8 +71,8 @@ module ActiveModel
# end
#
# Options:
- # * :on - Specifies the context where this validation is active
- # (e.g. :on => :create or :on => :special_rules)
+ # * :on - Specifies the context where this validation is active
+ # (e.g. :on => :create or :on => :custom_validation_context)
# * :allow_nil - Skip validation if attribute is +nil+.
# * :allow_blank - Skip validation if attribute is blank.
# * :if - Specifies a method, proc or string to call to determine
diff --git a/activemodel/lib/active_model/validations/acceptance.rb b/activemodel/lib/active_model/validations/acceptance.rb
index fba44defc1..4f390613aa 100644
--- a/activemodel/lib/active_model/validations/acceptance.rb
+++ b/activemodel/lib/active_model/validations/acceptance.rb
@@ -37,9 +37,9 @@ module ActiveModel
# Configuration options:
# * :message - A custom error message (default is: "must be
# accepted").
- # * :on - Specifies when this validation is active (default is
- # nil, other options are :create and
- # :update).
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :allow_nil - Skip validation if attribute is +nil+ (default
# is true).
# * :accept - Specifies value that is considered accepted.
diff --git a/activemodel/lib/active_model/validations/confirmation.rb b/activemodel/lib/active_model/validations/confirmation.rb
index bcefc7d888..e6d10cfff8 100644
--- a/activemodel/lib/active_model/validations/confirmation.rb
+++ b/activemodel/lib/active_model/validations/confirmation.rb
@@ -45,8 +45,9 @@ module ActiveModel
# Configuration options:
# * :message - A custom error message (default is: "doesn't match
# confirmation").
- # * :on - Specifies when this validation is active (default is
- # :nil, other options :create, :update).
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :if - Specifies a method, proc or string to call to determine
# if the validation should occur (e.g. :if => :allow_validation,
# or :if => Proc.new { |user| user.signup_step > 2 }). The
diff --git a/activemodel/lib/active_model/validations/exclusion.rb b/activemodel/lib/active_model/validations/exclusion.rb
index 4138892786..e38e565d09 100644
--- a/activemodel/lib/active_model/validations/exclusion.rb
+++ b/activemodel/lib/active_model/validations/exclusion.rb
@@ -29,6 +29,9 @@ module ActiveModel
# * :message - Specifies a custom error message (default is: "is reserved").
# * :allow_nil - If set to true, skips this validation if the attribute is +nil+ (default is +false+).
# * :allow_blank - If set to true, skips this validation if the attribute is blank (default is +false+).
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :if - Specifies a method, proc or string to call to determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The
# method, proc or string should return or evaluate to a true or false value.
diff --git a/activemodel/lib/active_model/validations/format.rb b/activemodel/lib/active_model/validations/format.rb
index ca8920bce6..541f53a834 100644
--- a/activemodel/lib/active_model/validations/format.rb
+++ b/activemodel/lib/active_model/validations/format.rb
@@ -51,7 +51,9 @@ module ActiveModel
# * :allow_blank - If set to true, skips this validation if the attribute is blank (default is +false+).
# * :with - Regular expression that if the attribute matches will result in a successful validation.
# * :without - Regular expression that if the attribute does not match will result in a successful validation.
- # * :on - Specifies when this validation is active (default is nil, other options :create, :update).
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :if - Specifies a method, proc or string to call to determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The
# method, proc or string should return or evaluate to a true or false value.
diff --git a/activemodel/lib/active_model/validations/inclusion.rb b/activemodel/lib/active_model/validations/inclusion.rb
index 3ee2a3ccd1..92ac940f36 100644
--- a/activemodel/lib/active_model/validations/inclusion.rb
+++ b/activemodel/lib/active_model/validations/inclusion.rb
@@ -38,6 +38,9 @@ module ActiveModel
# * :message - Specifies a custom error message (default is: "is not included in the list").
# * :allow_nil - If set to true, skips this validation if the attribute is +nil+ (default is +false+).
# * :allow_blank - If set to true, skips this validation if the attribute is blank (default is +false+).
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :if - Specifies a method, proc or string to call to determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The
# method, proc or string should return or evaluate to a true or false value.
diff --git a/activemodel/lib/active_model/validations/length.rb b/activemodel/lib/active_model/validations/length.rb
index 97a5cb012e..7af6c83460 100644
--- a/activemodel/lib/active_model/validations/length.rb
+++ b/activemodel/lib/active_model/validations/length.rb
@@ -83,7 +83,9 @@ module ActiveModel
# * :too_short - The error message if the attribute goes under the minimum (default is: "is too short (min is %{count} characters)").
# * :wrong_length - The error message if using the :is method and the attribute is the wrong size (default is: "is the wrong length (should be %{count} characters)").
# * :message - The error message to use for a :minimum, :maximum, or :is violation. An alias of the appropriate too_long/too_short/wrong_length message.
- # * :on - Specifies the context where this validation is active (e.g. :on => :create or :on => :special_rules)
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :if - Specifies a method, proc or string to call to determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The
# method, proc or string should return or evaluate to a true or false value.
diff --git a/activemodel/lib/active_model/validations/numericality.rb b/activemodel/lib/active_model/validations/numericality.rb
index 7b155bb7f7..ae576462e6 100644
--- a/activemodel/lib/active_model/validations/numericality.rb
+++ b/activemodel/lib/active_model/validations/numericality.rb
@@ -93,7 +93,9 @@ module ActiveModel
#
# Configuration options:
# * :message - A custom error message (default is: "is not a number").
- # * :on - Specifies the context where this validation is active (e.g. :on => :create or :on => :special_rules)
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :only_integer - Specifies whether the value has to be an integer, e.g. an integral value (default is +false+).
# * :allow_nil - Skip validation if attribute is +nil+ (default is +false+). Notice that for fixnum and float columns empty strings are converted to +nil+.
# * :greater_than - Specifies the value must be greater than the supplied value.
diff --git a/activemodel/lib/active_model/validations/presence.rb b/activemodel/lib/active_model/validations/presence.rb
index 3bfd6f15d1..cfb4c33dcc 100644
--- a/activemodel/lib/active_model/validations/presence.rb
+++ b/activemodel/lib/active_model/validations/presence.rb
@@ -26,7 +26,9 @@ module ActiveModel
#
# Configuration options:
# * message - A custom error message (default is: "can't be blank").
- # * :on - Specifies the context where this validation is active (e.g. :on => :create or :on => :special_rules)
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * if - Specifies a method, proc or string to call to determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }).
# The method, proc or string should return or evaluate to a true or false value.
diff --git a/activerecord/lib/active_record/validations.rb b/activerecord/lib/active_record/validations.rb
index 292de3ee61..d73fce9fd0 100644
--- a/activerecord/lib/active_record/validations.rb
+++ b/activerecord/lib/active_record/validations.rb
@@ -20,7 +20,7 @@ module ActiveRecord
# = Active Record Validations
#
- # Active Record includes the majority of its validations from ActiveModel::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
@@ -56,14 +56,14 @@ module ActiveRecord
perform_validations(options) ? super : raise(RecordInvalid.new(self))
end
- # Runs all the specified validations and returns true if no errors were added otherwise false.
+ # Runs all the validations within the specified context. Returns true if no errors are found,
+ # false otherwise.
#
- # ==== Arguments
+ # 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.
#
- # * context - Context to scope the execution of the validations. Default is nil.
- # If nil then the response of new_record? will determine the context. If new_record?
- # returns true the context will be :create, otherwise :update. Validation contexts
- # for each validation can be defined using the :on option
+ # Validations with no :on option will run no matter the context. Validations with
+ # some :on option will only run in the specified context.
def valid?(context = nil)
context ||= (new_record? ? :create : :update)
output = super(context)
diff --git a/activerecord/lib/active_record/validations/associated.rb b/activerecord/lib/active_record/validations/associated.rb
index 0f5f2a6e99..3a783aeb00 100644
--- a/activerecord/lib/active_record/validations/associated.rb
+++ b/activerecord/lib/active_record/validations/associated.rb
@@ -33,7 +33,9 @@ module ActiveRecord
#
# Configuration options:
# * :message - A custom error message (default is: "is invalid")
- # * :on - Specifies when this validation is active (default is nil, other options :create, :update).
+ # * :on - Specifies when this validation is active. Runs in all
+ # validation contexts by default (+nil+), other options are :create
+ # and :update.
# * :if - Specifies a method, proc or string to call to determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The
# method, proc or string should return or evaluate to a true or false value.