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.