__destroy__(callback) {

    let db = this.db;

    // Legacy
    if (arguments.length === 2) {
      db = arguments[0];
      callback = arguments[1];
    }

    let model = this;

    if (!(db instanceof Database)) {
      throw new Error('Must provide a valid Database to save to');
    }

    if (typeof callback !== 'function') {
      callback = function() {};
    }

    if (!model.inStorage()) {

      setTimeout(callback.bind(model, {'_query': 'Model has not been saved'}, model), 1);
      return;

    }

    let columns = model.fieldList().filter(function(v) {
      return model.isFieldPrimaryKey(v);
    });

    let query = db.adapter.generateDeleteQuery(model.schema.table, columns);

    db.query(
      query,
      columns.map(function(v) {
        return db.adapter.sanitize(model.getFieldData(v).type, model.get(v, true));
      }),
      function(err, result) {

        if (err) {
          model.setError('_query', err.message);
        } else {
          model._inStorage = false;
        }

        callback.call(model, err, model);

      }
    );

  }
Destroys model reference in database
@param {function} callback Method to execute upon completion, returns error if failed
@private