Module: DataMapper::Validations::ValidatesWithMethod
- Included in:
- ClassMethods
- Defined in:
- lib/dm-validations/validators/method_validator.rb
Overview
class MethodValidator
Instance Method Summary collapse
-
#validates_with_method(*fields) ⇒ Object
Validate using method called on validated object.
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
59 60 61 |
# File 'lib/dm-validations/validators/method_validator.rb', line 59 def validates_with_method(*fields) validators.add(MethodValidator, *fields) end |