From 547e695551e223e4d92762d3c176187e6780e524 Mon Sep 17 00:00:00 2001 From: Vijay Dev Date: Tue, 28 Feb 2012 18:58:59 +0530 Subject: [PATCH] move the strict validations to an appropriate section and some edits [ci skip] --- ...ctive_record_validations_callbacks.textile | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/railties/guides/source/active_record_validations_callbacks.textile b/railties/guides/source/active_record_validations_callbacks.textile index fc9a2ad30c..349d02c1f6 100644 --- a/railties/guides/source/active_record_validations_callbacks.textile +++ b/railties/guides/source/active_record_validations_callbacks.textile @@ -141,20 +141,6 @@ end +invalid?+ is simply the inverse of +valid?+. +invalid?+ triggers your validations, returning true if any errors were found in the object, and false otherwise. -h4. Strict Validations - -Rails can also be specify strict validations. You can use the +:strict+ option to set that validation as strict. If an object fails a strict validation then an +ActiveModel::StrictValidationFailed+ error message is raised. - - -class Person < ActiveRecord::Base - validates :name, :presence => {:strict => true} -end - ->> p = Person.new ->> p.valid? -=> ActiveModel::StrictValidationFailed: can't be blank - - h4(#validations_overview-errors). +errors[]+ To verify whether or not a particular attribute of an object is valid, you can use +errors[:attribute]+. It returns an array of all the errors for +:attribute+. If there are no errors on the specified attribute, an empty array is returned. @@ -531,6 +517,18 @@ class Person < ActiveRecord::Base end +h3. Strict Validations + +You can also specify validations to be strict and raise +ActiveModel::StrictValidationFailed+ when the object is invalid. + + +class Person < ActiveRecord::Base + validates :name, :presence => { :strict => true } +end + +Person.new.valid? => ActiveModel::StrictValidationFailed: Name can't be blank + + h3. Conditional Validation Sometimes it will make sense to validate an object just when a given predicate is satisfied. You can do that by using the +:if+ and +:unless+ options, which can take a symbol, a string or a +Proc+. You may use the +:if+ option when you want to specify when the validation *should* happen. If you want to specify when the validation *should not* happen, then you may use the +:unless+ option.