def validates_with_method(*attribute_names)
      options = Macros.extract_options(attribute_names)
      validation_rules.add(Rule::Method, attribute_names, options)
    end
def validates_with_method(*attribute_names)
      options = Macros.extract_options(attribute_names)
      validation_rules.add(Rule::Method, attribute_names, options)
    end
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 attribute_names 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.

 @example Usage
   require 'virtus'
   require 'aequitas'

   class Page
     include Virtus
     include Aequitas

     attribute :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