detach(ids, options) {
    return Promise.try(() => this.triggerThen('detaching', this, ids, options))
      .then(() => this._handler('delete', ids, options))
      .then((response) => this.triggerThen('detached', this, response, options))
      .return(this);
  }
Detach one or more related objects from their pivot tables. If a model or
id is passed, it attempts to remove from the pivot table based on that
foreign key. If no parameters are specified, we assume we will detach all
related associations.

This method (along with {@link Collection#attach} and {@link
Collection#updatePivot}) are mixed in to a {@link Collection} when returned
by a {@link Model#belongsToMany belongsToMany} relation.

@method Collection#detach
@param {mixed|mixed[]} [ids]
  One or more ID values or models to be detached from the relation.
@param {Object} options
  A hash of options.
@param {Transaction} options.transacting
  Optionally run the query in a transaction.
@returns {Promise<undefined>}
  A promise resolving to the updated Collection where this method was called.