Module Validatable::Macros
In: lib/macros.rb

Methods

Public Instance methods

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

[Validate]