code: function(fields, fn) {
      if (typeof fields === 'function') {
        fn = fields
        fields = '__base'
      }
      if (!fn) throw new this.definition.store.NoCallbackError()
      if (!Array.isArray(fields)) fields = [fields]
  
      for (var i in fields) {
        var attr = this.store.toInternalAttributeName(fields[i])
        this.validations[attr] = this.validations[attr] || []
        this.validations[attr].push(fn)
      }
  
      return this
    }
docs: Validate any field with a custom function.
  Synchronous: just return `true` or `false`
  Asynchronous: put a `done` parameter into your callback and call `done()` when finished.
  
  @class Definition
  @method validates
  @param {array} fields - The fields to validate
  @param {function} callback - The validation callback
  
  @callback
  @param {function} done - Optional: If you need a async validation, just call `done()` when finished
  @this Record
  
  @return {Definition}