Module: Validatable::Macros
- Defined in:
- lib/validatable/macros.rb
Instance Method Summary collapse
-
#before_validation(&block) ⇒ Object
call-seq: before_validation(&block).
-
#include_errors_from(attribute_to_validate, options = {}) ⇒ Object
call-seq: include_errors_from(attribute_to_validate, options = {}).
-
#include_validations_for(attribute_to_validate, options = {}) ⇒ Object
:nodoc:.
-
#include_validations_from(attribute_to_validate, options = {}) ⇒ Object
call-seq: include_validations_from(attribute).
-
#validates_acceptance_of(*args) ⇒ Object
call-seq: validates_acceptance_of(*args).
-
#validates_associated(*args) ⇒ Object
call-seq: validates_associated(*args).
-
#validates_confirmation_of(*args) ⇒ Object
call-seq: validates_confirmation_of(*args).
-
#validates_each(*args) ⇒ Object
call-seq: validates_each(*args).
- #validates_exclusion_of(*args) ⇒ Object
-
#validates_format_of(*args) ⇒ Object
call-seq: validates_format_of(*args).
- #validates_inclusion_of(*args) ⇒ Object
-
#validates_length_of(*args) ⇒ Object
call-seq: validates_length_of(*args).
-
#validates_numericality_of(*args) ⇒ Object
call-seq: validates_numericality_of(*args).
-
#validates_presence_of(*args) ⇒ Object
call-seq: validates_presence_of(*args).
-
#validates_true_for(*args) ⇒ Object
call-seq: validates_true_for(*args).
Instance Method Details
#before_validation(&block) ⇒ Object
call-seq: before_validation(&block)
Is called before valid? or valid_for_*?
class Person
include Validatable
before_validation do
self.name = "default name"
end
attr_accessor :name
end
310 311 312 |
# File 'lib/validatable/macros.rb', line 310 def before_validation(&block) before_validations << block end |
#include_errors_from(attribute_to_validate, options = {}) ⇒ Object
call-seq: include_errors_from(attribute_to_validate, options = {})
Validates the specified attributes.
class Person
include Validatable
validates_presence_of :name
attr_accessor :name
end
class PersonPresenter
include Validatable
include_errors_from :person, :map => { :name => :namen }, :if => lambda { not person.nil? }
attr_accessor :person
def initialize(person)
@person = person
end
end
presenter = PersonPresenter.new(Person.new)
presenter.valid? #=> false
presenter.errors.on(:namen) #=> "can't be blank"
The person attribute will be validated.
If person is invalid the errors will be added to the PersonPresenter errors collection.
Configuration options:
* map - A hash that maps attributes of the child to attributes of the parent.
* if - A block that when executed must return true of the validation will not occur.
288 289 290 |
# File 'lib/validatable/macros.rb', line 288 def include_errors_from(attribute_to_validate, = {}) children_to_validate << ChildValidation.new(attribute_to_validate, [:map] || {}, [:if] || lambda { |arg| true }) end |
#include_validations_for(attribute_to_validate, options = {}) ⇒ Object
:nodoc:
292 293 294 295 |
# File 'lib/validatable/macros.rb', line 292 def include_validations_for(attribute_to_validate, = {}) #:nodoc: puts "include_validations_for is deprecated; use include_errors_from instead" children_to_validate << ChildValidation.new(attribute_to_validate, [:map] || {}, [:if] || lambda { |arg| true }) end |
#include_validations_from(attribute_to_validate, options = {}) ⇒ Object
call-seq: include_validations_from(attribute)
Includes all the validations that are defined on the attribute.
class Person
include Validatable
validates_presence_of :name
end
class PersonPresenter
include Validatable
include_validataions_from :person
attr_accessor :person
def name
person.name
end
def initialize(person)
@person = person
end
end
presenter = PersonPresenter.new(Person.new)
presenter.valid? #=> false
presenter.errors.on(:name) #=> "can't be blank"
The name attribute whose validations should be added.
254 255 256 |
# File 'lib/validatable/macros.rb', line 254 def include_validations_from(attribute_to_validate, = {}) validations_to_include << IncludedValidation.new(attribute_to_validate) end |
#validates_acceptance_of(*args) ⇒ Object
call-seq: validates_acceptance_of(*args)
Encapsulates the pattern of wanting to validate the acceptance of a terms of service check box (or similar agreement). Example:
class Person
include Validatable
validates_acceptance_of :terms_of_service
validates_acceptance_of :eula, :message => "must be abided"
end
Configuration options:
* after_validate - A block that executes following the run of a validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* group - The group that this validation belongs to. A validation can belong to multiple groups
118 119 120 |
# File 'lib/validatable/macros.rb', line 118 def validates_acceptance_of(*args) add_validations(args, ValidatesAcceptanceOf) end |
#validates_associated(*args) ⇒ Object
call-seq: validates_associated(*args)
Checks the validity of an associated object or objects and adds a single error if validation fails.
class Person
include Validatable
attr_accessor :addresses
validates_associated :addresses
end
Configuration options:
* after_validate - A block that executes following the run of a validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* group - The group that this validation belongs to. A validation can belong to multiple groups
224 225 226 |
# File 'lib/validatable/macros.rb', line 224 def validates_associated(*args) add_validations(args, ValidatesAssociated) end |
#validates_confirmation_of(*args) ⇒ Object
call-seq: validates_confirmation_of(*args)
Encapsulates the pattern of wanting to validate a password or email address field with a confirmation. Example:
Class:
class PersonPresenter
include Validatable
validates_confirmation_of :user_name, :password
validates_confirmation_of :email_address, :message => "should match confirmation"
end
View:
<%= password_field "person", "password" %>
<%= password_field "person", "password_confirmation" %>
Configuration options:
* after_validate - A block that executes following the run of a validation
* case_sensitive - Whether or not to apply case-sensitivity on the comparison. Defaults to true.
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* group - The group that this validation belongs to. A validation can belong to multiple groups
146 147 148 |
# File 'lib/validatable/macros.rb', line 146 def validates_confirmation_of(*args) add_validations(args, ValidatesConfirmationOf) end |
#validates_each(*args) ⇒ Object
call-seq: validates_each(*args)
Validates that the logic evaluates to true
class Address
include Validatable
validates_each :zip_code, :logic => lambda { errors.add(:zip_code, "is not valid") if ZipCodeService.allows(zip_code) }
end
The logic option is required.
Configuration options:
* after_validate - A block that executes following the run of a validation
* group - The group that this validation belongs to. A validation can belong to multiple groups
* if - A block that when executed must return true of the validation will not occur
* level - The level at which the validation should occur
* logic - A block that executes to perform the validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
23 24 25 |
# File 'lib/validatable/macros.rb', line 23 def validates_each(*args) add_validations(args, ValidatesEach) end |
#validates_exclusion_of(*args) ⇒ Object
197 198 199 |
# File 'lib/validatable/macros.rb', line 197 def validates_exclusion_of(*args) add_validations(args, ValidatesExclusionOf) end |
#validates_format_of(*args) ⇒ Object
call-seq: validates_format_of(*args)
Validates whether the value of the specified attribute is of the correct form by matching it against the regular expression provided.
class Person
include Validatable
validates_format_of :first_name, :with => /[ A-Za-z]/
end
A regular expression must be provided or else an exception will be raised.
Configuration options:
* after_validate - A block that executes following the run of a validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* with - The regular expression used to validate the format
* group - The group that this validation belongs to. A validation can belong to multiple groups
48 49 50 |
# File 'lib/validatable/macros.rb', line 48 def validates_format_of(*args) add_validations(args, ValidatesFormatOf) end |
#validates_inclusion_of(*args) ⇒ Object
201 202 203 |
# File 'lib/validatable/macros.rb', line 201 def validates_inclusion_of(*args) add_validations(args, ValidatesInclusionOf) end |
#validates_length_of(*args) ⇒ Object
call-seq: validates_length_of(*args)
Validates that the specified attribute matches the length restrictions supplied.
class Person
include Validatable
validates_length_of :first_name, :maximum=>30
validates_length_of :last_name, :minimum=>30
end
Configuration options:
* after_validate - A block that executes following the run of a validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* minimum - The minimum size of the attribute
* maximum - The maximum size of the attribute
* is - The size the attribute must be
* within - A range that the size of the attribute must fall within
* group - The group that this validation belongs to. A validation can belong to multiple groups
74 75 76 |
# File 'lib/validatable/macros.rb', line 74 def validates_length_of(*args) add_validations(args, ValidatesLengthOf) end |
#validates_numericality_of(*args) ⇒ Object
call-seq: validates_numericality_of(*args)
Validates that the specified attribute is numeric.
class Person
include Validatable
validates_numericality_of :age
end
Configuration options:
* after_validate - A block that executes following the run of a validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* group - The group that this validation belongs to. A validation can belong to multiple groups
* only_integer - Whether the attribute must be an integer (default is false)
96 97 98 |
# File 'lib/validatable/macros.rb', line 96 def validates_numericality_of(*args) add_validations(args, ValidatesNumericalityOf) end |
#validates_presence_of(*args) ⇒ Object
call-seq: validates_presence_of(*args)
Validates that the specified attributes are not nil or an empty string
class Person
include Validatable
validates_presence_of :first_name
end
The first_name attribute must be in the object and it cannot be nil or empty.
Configuration options:
* after_validate - A block that executes following the run of a validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* group - The group that this validation belongs to. A validation can belong to multiple groups
169 170 171 |
# File 'lib/validatable/macros.rb', line 169 def validates_presence_of(*args) add_validations(args, ValidatesPresenceOf) end |
#validates_true_for(*args) ⇒ Object
call-seq: validates_true_for(*args)
Validates that the logic evaluates to true
class Person
include Validatable
validates_true_for :first_name, :logic => lambda { first_name == 'Jamie' }
end
The logic option is required.
Configuration options:
* after_validate - A block that executes following the run of a validation
* message - The message to add to the errors collection when the validation fails
* times - The number of times the validation applies
* level - The level at which the validation should occur
* if - A block that when executed must return true of the validation will not occur
* group - The group that this validation belongs to. A validation can belong to multiple groups
* logic - A block that executes to perform the validation
193 194 195 |
# File 'lib/validatable/macros.rb', line 193 def validates_true_for(*args) add_validations(args, ValidatesTrueFor) end |