Module: DataMapper::Validations::ValidatesWithMethod

Included in:
ClassMethods
Defined in:
lib/dm-validations/validators/method_validator.rb

Overview

class MethodValidator

Instance Method Summary collapse

Instance Method Details

#validates_with_method(*fields) ⇒ Object

Validate using method called on validated object. The method must to return either true, or a pair of [false, error message string], and is specified as a symbol passed with :method option.

This validator does support multiple fields being specified at a time, but we encourage you to use it with one property/method at a time.

Real world experience shows that method validation is often useful when attribute needs to be virtual and not a property name.

class Page
  include DataMapper::Resource

  property :zip_code, String

  validates_with_method :zip_code,
                        :method => :in_the_right_location?

  def in_the_right_location?
    if @zip_code == "94301"
      return true
    else
      return [false, "You're in the wrong zip code"]
    end
  end

  # A call to valid? will return false and
  # populate the object's errors with "You're in the
  # wrong zip code" unless zip_code == "94301"
end

Examples:

Usage

require 'dm-validations'


59
60
61
# File 'lib/dm-validations/validators/method_validator.rb', line 59

def validates_with_method(*fields)
  validators.add(MethodValidator, *fields)
end