docs: function(attr, value) {
            var self = this,
                result = {},
                error;
            if (_.isArray(attr)) {
              _.each(attr, function(attr) {
                error = self.preValidate(attr);
                if (error) {
                  result[attr] = error;
                }
              });
              return _.isEmpty(result) ? undefined : result;
            } else if (_.isObject(attr)) {
              _.each(attr, function(value, key) {
                error = self.preValidate(key, value);
                if (error) {
                  result[key] = error;
                }
              });
              return _.isEmpty(result) ? undefined : result;
            } else {
              if (_.isUndefined(value) && isNestedModel(this)) {
                value = this.get(attr);
              }
              return validateAttr(this, value, attr);
            }
          }