# File lib/dm-validations/validators/block_validator.rb, line 41
      def validates_with_block(*fields, &block)
        @__validates_with_block_count ||= 0
        @__validates_with_block_count += 1

        # create method and pass it to MethodValidator
        unless block_given?
          raise ArgumentError, 'You need to pass a block to validates_with_block method'
        end

        method_name = "__validates_with_block_#{@__validates_with_block_count}".to_sym
        define_method(method_name, &block)

        options = fields.last.is_a?(Hash) ? fields.last.pop.dup : {}
        options[:method] = method_name
        fields = [method_name] if fields.empty?

        validators.add(MethodValidator, *fields + [options])
      end