method
validates_inclusion_of
Ruby on Rails latest stable (v7.1.3.2)
-
3 notes -
Class: ActiveModel::Validations::ClassMethods
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0 (0)
- 2.2.1 (0)
- 2.3.8 (-1)
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0
- 7.1.3.2
- 7.1.3.4
- What's this?
validates_inclusion_of(*attr_names)
public
Validates whether the value of the specified attribute is available in a particular enumerable object.
class Person < ActiveRecord::Base validates_inclusion_of :gender, :in => %w( m f ) validates_inclusion_of :age, :in => 0..99 validates_inclusion_of :format, :in => %w( jpg gif png ), :message => "extension %s is not included in the list" end
Configuration options:
- :in - An enumerable object of available items
- :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 null (default is: false)
- :allow_blank - If set to true, skips this validation if the attribute is blank (default is: false)
- :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.
- :unless - Specifies a method, proc or string to call to determine if the validation should not occur (e.g. :unless => :skip_validation, or :unless => Proc.new { |user| user.signup_step <= 2 }). The method, proc or string should return or evaluate to a true or false value.
Register or
log in
to add new notes.
neves -
August 25, 2008
5 thanks
%w(true false) != [true, false]
Don´t confuse the right:
validates_inclusion_of :published, :in => [true, false]
with the wrong:
validates_inclusion_of :published, :in => %w(true false)
cause:
%w(true false) == ["true", "false"]
zoopzoop -
February 23, 2009
2 thanks
Check if value is included in array of valid values
If you want to check the value of an attribute using an array of valid values, the array has to be defined before the validation, so
validates_inclusion_of :name, :in => VALID_NAMES VALID_NAMES = %w(Peter Paul Mary)
won’t work, but
VALID_NAMES = %w(Peter Paul Mary) validates_inclusion_of :name, :in => VALID_NAMES
will.
nhance -
November 18, 2009
0 thanks
Be careful with float ranges
Pay close attention to the fact that the object passed to :in must be enumerable.
If you want to validate a ranking, the following won’t work:
validates_inclusion_of :rating, :in => (0.0..10.0)
Instead, you’ll want to use validates_numericality_of like this:
validates_numericality_of :rating, :greater_than_or_equal_to => 0.0, :less_than_or_equal_to => 10.0