lib/aws/record/validations.rb in aws-sdk-1.8.5 vs lib/aws/record/validations.rb in aws-sdk-1.9.0
- old
+ new
@@ -9,97 +9,82 @@
# or in the "license" file accompanying this file. This file is
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
-require 'aws/record/validators/acceptance'
-require 'aws/record/validators/block'
-require 'aws/record/validators/confirmation'
-require 'aws/record/validators/count'
-require 'aws/record/validators/exclusion'
-require 'aws/record/validators/format'
-require 'aws/record/validators/inclusion'
-require 'aws/record/validators/length'
-require 'aws/record/validators/numericality'
-require 'aws/record/validators/presence'
-require 'aws/record/validators/method'
-
module AWS
module Record
# Validation methods to be used with subclasses of AWS::Record::Model.
#
- # = General Usage
+ # # General Usage
#
# All standard validation methods follow the same basic usage.
# Call the validation method followed by one more attribute names
# and then an optional hash of modifiers.
#
- # class Book < AWS::Record::Model
+ # class Book < AWS::Record::Model
#
- # # ...
+ # # ...
#
- # validates_presence_of :title, :author
+ # validates_presence_of :title, :author
#
- # validates_length_of :summary,
- # :max => 500,
- # :allow_nil => true,
- # :allow_blank => true
+ # validates_length_of :summary,
+ # :max => 500,
+ # :allow_nil => true,
+ # :allow_blank => true
#
- # end
+ # end
#
- # = Conditional Validations
+ # # Conditional Validations
#
- # Sometimes you only want to validate an attribute under certain
+ # Sometimes you only want to validate an attribute under certain
# conditions. To make this simple, all validation methods accept the
# following 3 options:
#
- # * +:on+
- # * +:if+
- # * +:unless+
+ # * `:on`
+ # * `:if`
+ # * `:unless`
#
# You may mix and match all 3 of the above options.
#
- # === Validate on :create or :update
+ # ### Validate on :create or :update
#
# By default validations are run on create and update, but you can
# specify them to run for only create (initial save) or updates.
#
- # validates_presence_of :created_at, :on => :create
+ # validates_presence_of :created_at, :on => :create
#
- # validates_presence_of :updated_at, :on => :update
- #
- # === Validate :if or :unless
+ # validates_presence_of :updated_at, :on => :update
#
+ # ### Validate :if or :unless
+ #
# Sometimes you have more complex requirements to determine if/when a
- # validation should run. +:if+ and +:unless+: both accept either
+ # validation should run. `:if` and `:unless`: both accept either
# a method name or proc.
#
- # class Person
+ # class Person
#
- # # ...
+ # # ...
#
- # validates_presence_of :job_title, :if => :employee?
+ # validates_presence_of :job_title, :if => :employee?
#
- # validates_presence_of :nickname, :if => lambda {|person|
- # person.is_family? or person.is_friend? }
+ # validates_presence_of :nickname, :if => lambda {|person|
+ # person.is_family? or person.is_friend? }
#
- # end
+ # end
#
- # = Validating Virtual (Non-persisted) Attributes
+ # # Validating Virtual (Non-persisted) Attributes
#
# All of the validators can be used with configured attributes, but they
# can also be used with any attribute that has a setter and a getter.
#
- # Class Book < AWS::Record::Model
+ # Class Book < AWS::Record::Model
+ # attr_accessor :title
+ # validates_presence_of :title
+ # end
#
- # attr_accessor :title
- #
- # validates_presence_of :title
- #
- # end
- #
module Validations
def self.extended base
base.send(:define_method, :run_validations) do
@@ -113,94 +98,95 @@
end
# Registers a validation method.
#
- # validate :ensure_age_is_greater_than_shoe_size
+ # validate :ensure_age_is_greater_than_shoe_size
#
- # def ensure_age_is_greater_than_shoe_size
- # unless age > shoe_size
- # errors.add(:age, 'should be greater than your shoe size')
+ # def ensure_age_is_greater_than_shoe_size
+ # unless age > shoe_size
+ # errors.add(:age, 'should be greater than your shoe size')
+ # end
# end
- # end
#
# You can also pass a list of method names that should be called during
# validation.
#
- # validate :some_complex_validation, :some_other_validation
+ # validate :some_complex_validation, :some_other_validation
#
# As with most other validation methods you can also pass a hash of
# options that affect when the named validation methods get called.
#
- # validate :my_custom_validation, :unless => :new_record?
+ # validate :my_custom_validation, :unless => :new_record?
#
# @overload validate(*method_names, options = {})
# @param [Array<Symbol>] method_names A list of methods to call
- # during validation.
+ # during validation.
# @param [Hash] options
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ #
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validate *args
validators << MethodValidator.new(self, *args)
end
# This validation method is primariliy intended for ensuring a form
# checkbox (like an EULA agreement or terms of service acknowledgement)
# is checked.
#
- # class User < AWS::Record::Model
- # boolean_attr :terms_of_service
- # validates_acceptance_of :terms_of_service
- # end
+ # class User < AWS::Record::Model
+ # boolean_attr :terms_of_service
+ # validates_acceptance_of :terms_of_service
+ # end
#
- # === Virtual Attributes
+ # ### Virtual Attributes
#
# If you choose to validate the acceptance of a non-existant attribute
# then a setter and a getter will be added automtically for you.
#
- # class User < AWS::Record::Model
- # validates_acceptance_of :terms_of_service
- # end
+ # class User < AWS::Record::Model
+ # validates_acceptance_of :terms_of_service
+ # end
#
- # user = User.new
- # user.respond_to?(:terms_of_service) #=> true
- # user.respond_to?(:terms_of_service=) #=> true
+ # user = User.new
+ # user.respond_to?(:terms_of_service) #=> true
+ # user.respond_to?(:terms_of_service=) #=> true
#
- # === Accepted Values
+ # ### Accepted Values
#
- # The default behavior for +validates_acceptance_of+ is to add
- # an error when the value is '1' or +true+. Also note, this validation
- # method defaults +:allow_nil+ to true.
+ # The default behavior for `validates_acceptance_of` is to add
+ # an error when the value is '1' or `true`. Also note, this validation
+ # method defaults `:allow_nil` to true.
#
- # * +nil+ implies the field was omitted from the form and therefore
+ # * `nil` implies the field was omitted from the form and therefore
# should not be validated
#
- # class User < AWS::Record::Model
- # validates_acceptance_of :terms_of_service
- # end
+ # class User < AWS::Record::Model
+ # validates_acceptance_of :terms_of_service
+ # end
#
- # u = User.new
- # u.terms_of_service #=> nil
- # u.valid? #=> true
+ # u = User.new
+ # u.terms_of_service #=> nil
+ # u.valid? #=> true
#
# * '1' is the default value for most checkbox form helpers, and #
# therefore indicates an accepted value.
#
- # * +true+ is how boolean attributes typecast '1'. This is helpful
- # when you have your checkbox post its value to a +:boolean_attr+.
+ # * `true` is how boolean attributes typecast '1'. This is helpful
+ # when you have your checkbox post its value to a `:boolean_attr`.
#
- # === Multi-Valued Attributes
+ # ### Multi-Valued Attributes
#
# This validator works only with single-valued attributes. If you need
# to validate that all of the values in a set are true, then use
# {#validates_inclusion_of}.
#
@@ -210,381 +196,377 @@
# @overload validates_acceptance_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
# @option options [mixed] :accpet Specify an additional accepted value.
#
- # validates_acceptance_of :agree, :accept => 'yes'
+ # validates_acceptance_of :agree, :accept => 'yes'
#
# @option options [String] :message A custom error message. The default
- # +:message+ is "must be accepted".
+ # `:message` is "must be accepted".
# @option options [Boolean] :allow_nil (true) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (true) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ #
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_acceptance_of *args
validators << AcceptanceValidator.new(self, *args)
end
# Intended primarily for validating a form field was entered correctly
# by requiring it twice:
#
- # Model:
- # class User < AWS::Record::Model
- # validates_confirmation_of :password, :if => :password_changed?
- # end
+ # Model:
+ # class User < AWS::Record::Model
+ # validates_confirmation_of :password, :if => :password_changed?
+ # end
#
- # View:
- # <%= password_field "user", "password" %>
- # <%= password_field "user", "password_confirmation" %>
+ # View:
+ # <%= password_field "user", "password" %>
+ # <%= password_field "user", "password_confirmation" %>
#
- # === Confirmation Value Accessors
+ # ### Confirmation Value Accessors
#
- # If your model does not have accessors for the confirmation value
+ # If your model does not have accessors for the confirmation value
# then they will be automatically added. In the example above
- # the user class would have an +attr_accessor+ for
- # +:password_confirmation+.
+ # the user class would have an `attr_accessor` for
+ # `:password_confirmation`.
#
- # === Conditional Validation
+ # ### Conditional Validation
#
# Mostly commonly you only need to validate confirmation of an
- # attribute when it has changed. It is therefore suggested to
- # pass an +:if+ condition reflecting this:
- #
- # validates_confirmation_of :password, :if => :password_changed?
+ # attribute when it has changed. It is therefore suggested to
+ # pass an `:if` condition reflecting this:
#
- # === Multi-Valued Attributes
+ # validates_confirmation_of :password, :if => :password_changed?
#
+ # ### Multi-Valued Attributes
+ #
# This validator works only with single-valued attributes.
# It should not be used on attributes that have array or set values.
#
- # @note This validation method does not accept the +:allow_nil+ or the
- # +:allow_blank+ options.
+ # @note This validation method does not accept the `:allow_nil` or the
+ # `:allow_blank` options.
#
# @overload validates_confirmation_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
# @option options [String] :message A custom error message. The default
- # +:message+ is "doesn't match confirmation".
+ # `:message` is "doesn't match confirmation".
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ #
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_confirmation_of *args
validators << ConfirmationValidator.new(self, *args)
end
# Validates the number of values for a given attribute.
#
- # === Length vs Count
- #
- # +validates_count_of+ validates the number of attribute values,
- # whereas +validates_length_of: validates the length of each
+ # ### Length vs Count
+ #
+ # `validates_count_of` validates the number of attribute values,
+ # whereas +validates_length_of: validates the length of each
# attribute value instead.
#
# If you need to ensure each attribute value is a given length see
# {#validates_length_of} instead.
#
- # === Examples
+ # ### Examples
#
# You can validate there are a certain number of values:
#
- # validates_count_of :parents, :exactly => 2
- #
+ # validates_count_of :parents, :exactly => 2
+ #
# You can also specify a range:
#
- # validates_count_of :tags, :within => (2..10)
+ # validates_count_of :tags, :within => (2..10)
#
# You can also specify min and max value seperately:
#
- # validates_count_of :tags, :minimum => 2, :maximum => 10
+ # validates_count_of :tags, :minimum => 2, :maximum => 10
#
- # === +nil+ Values
+ # ### `nil` Values
#
- # If you are validating an array or set that contains +nil+ values,
- # the +nil+ values are counted normally as 1 each.
+ # If you are validating an array or set that contains `nil` values,
+ # the `nil` values are counted normally as 1 each.
#
# If you are validating a non-enuemrable attribute that only
# contains a single nil or other scalar value, then nil is
# counted as 0.
#
- # === Singular Attributes
+ # ### Singular Attributes
#
# This validator is intended to for validating attributes that have
# an array or set of values. If used on an attribute that
- # returns a scalar value (like +nil+ or a string), the count will
- # always be 0 (for +nil+) or 1 (for everything else).
+ # returns a scalar value (like `nil` or a string), the count will
+ # always be 0 (for `nil`) or 1 (for everything else).
#
- # It is therefore recomended to use +:validates_presence_of+ in
- # place of +:validates_count_of+ when working with single-valued
+ # It is therefore recomended to use `:validates_presence_of` in
+ # place of `:validates_count_of` when working with single-valued
# attributes.
#
# @overload validates_count_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
- # @option options [Integer] :exactly The exact number of values the
- # attribute should have. If this validation option fails the
- # error message specified by +:wrong_number+ will be added.
- # @option options [Range] :within An range of number of values to
+ # @option options [Integer] :exactly The exact number of values the
+ # attribute should have. If this validation option fails the
+ # error message specified by `:wrong_number` will be added.
+ # @option options [Range] :within An range of number of values to
# accept. If the attribute has a number of values outside this range
- # then the +:too_many+ or +:too_few+ error message will be added.
+ # then the `:too_many` or `:too_few` error message will be added.
# @option options [Integer] :minimum The minimum number of values
- # the attribute should have. If it has fewer, the +:too_few+ error
+ # the attribute should have. If it has fewer, the `:too_few` error
# message will be added.
# @option options [Integer] :maximum The maximum number of values
- # the attribute should have. If it has more, the +:too_many+ error
+ # the attribute should have. If it has more, the `:too_many` error
# message will be added.
# @option options [String] :too_many An error message added
# when the attribute has too many values. Defaults to
# <code>"has too many values (maximum is %{maximum})"</code>
# @option options [String] :too_few An error message added
# when the attribute has too few values. Defaults to
# <code>"has too few values (minimum is %{minimum})"</code>
# @option options [String] :wrong_number An error message
# added when the number of attribute values does not match
- # the +:exactly+ option. Defaults to <code>"has the wrong
+ # the `:exactly` option. Defaults to <code>"has the wrong
# number of values (should have exactly %{exactly}"</code>
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_count_of *args
validators << CountValidator.new(self, *args)
end
# Adds a block validator that is called during record validation.
#
- # class ExampleClass < AWS::Record::Model
+ # class ExampleClass < AWS::Record::Model
#
- # string_attr :name
+ # string_attr :name
#
- # validates_each(:name) do |record, attribute_name, value|
- # if value == 'John Doe'
- # record.errors.add(attr_name, 'may not be an alias')
+ # validates_each(:name) do |record, attribute_name, value|
+ # if value == 'John Doe'
+ # record.errors.add(attr_name, 'may not be an alias')
+ # end
# end
- # end
#
- # end
+ # end
#
# @overload validates_each(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
# @option options [Boolean] :allow_nil (false) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (false) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_each *attributes, &block
unless block_given?
raise ArgumentError, 'missing required block for validates_each'
end
validators << BlockValidator.new(self, *attributes, &block)
end
- # Validates that the attribute value is not included in the given
+ # Validates that the attribute value is not included in the given
# enumerable.
#
- # validates_exlusion_of :username, :in => %w(admin administrator)
+ # validates_exlusion_of :username, :in => %w(admin administrator)
#
- # === Multi-Valued Attributes
+ # ### Multi-Valued Attributes
#
# You may use this with multi-valued attributes the same way you use it
# with single-valued attributes:
#
- # class Product < AWS::Record::Model
+ # class Product < AWS::Record::Model
+ # string_attr :tags, :set => true
+ # validates_exlusion_of :tags, :in => four_letter_words
+ # end
#
- # string_attr :tags, :set => true
- #
- # validates_exlusion_of :tags, :in => four_letter_words
- #
- # end
- #
# @overload validates_exclusion_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
# @option options [required, Enumerable] :in An enumerable object to
# ensure the value is not in.
# @option options [String] :message A custom error message. The default
- # +:message+ is "is reserved".
+ # `:message` is "is reserved".
# @option options [Boolean] :allow_nil (false) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (false) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_exclusion_of *args
validators << ExclusionValidator.new(self, *args)
end
# Validates the attribute's value matches the given regular exression.
- #
- # validates_format_of :year, :with => /^\d{4}$/
#
- # You can also perform a not-match using +:without+ instead of +:with+.
+ # validates_format_of :year, :with => /^\d{4}$/
#
- # validates_format_of :username, :without => /\d/
+ # You can also perform a not-match using `:without` instead of `:with`.
#
- # === Multi-Valued Attributes
+ # validates_format_of :username, :without => /\d/
#
+ # ### Multi-Valued Attributes
+ #
# You may use this with multi-valued attributes the same way you use it
# with single-valued attributes:
#
- # class Product < AWS::Record::Model
+ # class Product < AWS::Record::Model
+ # string_attr :tags, :set => true
+ # validates_format_of :tags, :with => /^\w{2,10}$/
+ # end
#
- # string_attr :tags, :set => true
- #
- # validates_format_of :tags, :with => /^\w{2,10}$/
- #
- # end
- #
# @overload validates_format_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
- # @option options [Regexp] :with If the value matches the given
+ # @option options [Regexp] :with If the value matches the given
# regex, an error will not be added.
- # @option options [Regexp] :without If the value matches the given
+ # @option options [Regexp] :without If the value matches the given
# regex, an error will be added.
# must match, or an error is added.
# @option options [String] :message A custom error message. The default
- # +:message+ is "is reserved".
+ # `:message` is "is reserved".
# @option options [Boolean] :allow_nil (false) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (false) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_format_of *args
validators << FormatValidator.new(self, *args)
end
# Validates that the attribute value is included in the given enumerable
# object.
#
- # class MultipleChoiceAnswer < AWS::Record::Model
- # validates_inclusion_of :letter, :in => %w(a b c d e)
- # end
+ # class MultipleChoiceAnswer < AWS::Record::Model
+ # validates_inclusion_of :letter, :in => %w(a b c d e)
+ # end
#
- # === Multi-Valued Attributes
+ # ### Multi-Valued Attributes
#
# You may use this with multi-valued attributes the same way you use it
# with single-valued attributes.
- #
+ #
# @overload validates_inclusion_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
# @option options [required, Enumerable] :in An enumerable object to
# check for the value in.
# @option options [String] :message A custom error message. The default
- # +:message+ is "is not included in the list".
+ # `:message` is "is not included in the list".
# @option options [Boolean] :allow_nil (false) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (false) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_inclusion_of *attributes
validators << InclusionValidator.new(self, *attributes)
end
# Validates the attribute values are of a specified length.
#
- # validates_lenth_of :username, :within => 3..25
+ # validates_lenth_of :username, :within => 3..25
#
- # === Length vs Count
- #
- # +validates_length_of+ validates the length of individual attribute
+ # ### Length vs Count
+ #
+ # `validates_length_of` validates the length of individual attribute
# values, whereas +validates_count_of: validates the number of
- # attribute values.
+ # attribute values.
#
# If you need to ensure there are certain number of values see
# {#validates_count_of} instead.
#
# @overload validates_length_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
# @option options [Enumerable] :within An enumerable object to
# ensure the length of the value falls within.
# @option options [Integer] :exactly The exact length a value must be.
- # If this validation fails the error message specified by
- # +:wrong_length+ will be added.
+ # If this validation fails the error message specified by
+ # `:wrong_length` will be added.
# @option options [Range] :within An enumerable object which must
# include the length of the attribute, or an error will be added.
- # If the attribute has a length outside the range then the
- # +:too_long+ or +:too_short+ error message will be added.
+ # If the attribute has a length outside the range then the
+ # `:too_long` or `:too_short` error message will be added.
# @option options [Integer] :minimum The minimum length an attribute
- # value should be. If it is shorter, the +:too_short+ error
+ # value should be. If it is shorter, the `:too_short` error
# message will be added.
# @option options [Integer] :maximum The maximum length an attribute
- # value should be. If it is longer, the +:too_long+ error
+ # value should be. If it is longer, the `:too_long` error
# message will be added.
# @option options [String] :too_long An error message added
# when the attribute value is too long. Defaults to
# <code>"is too long (maximum is %{maximum}
# characters)"</code>
@@ -592,110 +574,110 @@
# when the attribute value is too short. Defaults to
# <code>"is too short (minimum is %{minimum}
# characters)"</code>
# @option options [String] :wrong_length An error message
# added when the attribute has the incorrect length (as
- # specified by +:exactly+). Defaults to <code>"is the wrong
+ # specified by `:exactly`). Defaults to <code>"is the wrong
# length (should be %{exactly} characters"</code>
# @option options [Boolean] :allow_nil (false) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (false) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_length_of *args
validators << LengthValidator.new(self, *args)
end
# Validates the attribute has a numeric value.
#
- # validates_numericality_of :age, :only_integer => true
+ # validates_numericality_of :age, :only_integer => true
#
- # === Multi-Valued Attributes
+ # ### Multi-Valued Attributes
#
# You can validate multi-valued attributes using this the same way you
- # validate single-valued attributes. Each value will be validated
+ # validate single-valued attributes. Each value will be validated
# individually.
#
# @overload validates_numericality_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
- # @option options [Boolean] :only_integer (false) Adds an error
+ # @option options [Boolean] :only_integer (false) Adds an error
# when valiating and the value is numeric, but it not a whole number.
# @option options [Integer] :equal_to When set the value must equal
# the given value exactly. May not be used with the greater/less
# options.
# @option options [Numeric] :greater_than Ensures the attribute
# is greater than the given number.
- # @option options [Integer] :greater_than_or_equal_to Ensures the
+ # @option options [Integer] :greater_than_or_equal_to Ensures the
# attribute is greater than or equal to the given number.
# @option options [Numeric] :less_than Ensures the attribute is less
# than the given value.
# @option options [Integer] :less_than_or_equal_to Ensures the value is
# less than or equal to the given number.
# @option options [Numeric] :even If true, the value may only be
- # an even integer. This forces the +:only_integer+ to +true+.
+ # an even integer. This forces the `:only_integer` to `true`.
# @option options [Numeric] :odd If true, the value may only be
- # an odd integer. This forces the +:only_integer+ to +true+.
+ # an odd integer. This forces the `:only_integer` to `true`.
# @option options [String] :message A custom error message. The default
- # +:message+ is "is not a number".
+ # `:message` is "is not a number".
# @option options [Boolean] :allow_nil (false) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (false) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_numericality_of *args
validators << NumericalityValidator.new(self, *args)
end
- # Validates the named attributes are not blank. For validation
+ # Validates the named attributes are not blank. For validation
# purposes, blank values include:
#
- # * +nil+
+ # * `nil`
# * empty string
# * anything that responds to #empty? with true
# * anything that responds to #blank? with true
- #
+ #
# @overload validates_presence_of(*attributes, options = {}, &block)
# @param attributes A list of attribute names to validate.
# @param [Hash] options
# @option options [String] :message A custom error message. The default
- # +:message+ is "may not be blank".
+ # `:message` is "may not be blank".
# @option options [Symbol] :on (:save) When this validation is run.
# Valid values include:
- # * +:save+
- # * +:create+
- # * +:update+
+ # * `:save`
+ # * `:create`
+ # * `:update`
# @option options [Boolean] :allow_nil (false) Skip validation if the
- # attribute value is +nil+.
+ # attribute value is `nil`.
# @option options [Boolean] :allow_blank (false) Skip validation if the
- # attribute value is +blank+.
+ # attribute value is `blank`.
# @option options [Symbol,String,Proc] :if Specifies a method or proc
# to call. The validation will only be run if the return value is
- # of the method/proc is true (e.g. +:if => :name_changed?+ or
- # +:if => lambda{|book| book.in_stock? }+).
- # @option options [Symbol,String,Proc] :unless Specifies a method or
+ # of the method/proc is true (e.g. `:if => :name_changed?` or
+ # `:if => lambda{|book| book.in_stock? }`).
+ # @option options [Symbol,String,Proc] :unless Specifies a method or
# proc to call. The validation will *not* be run if the return value
# is of the method/proc is false.
def validates_presence_of *args
validators << PresenceValidator.new(self, *args)
end