| Module | Validatable::Macros |
| In: |
lib/macros.rb
|
Is called before valid? or valid_for_*?
class Person
include Validatable
before_validation do
self.name = "default name"
end
attr_accessor :name
end
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.
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.
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
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
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
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
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
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)
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
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