save() {
    let collection = this._schema.toInternalCollectionName(this.modelName);

    if (this.isNew()) {
      // Update the attrs with the db response
      this.attrs = this._schema.db[collection].insert(this.attrs);

      // Ensure the id getter/setter is set
      this._definePlainAttribute("id");
    } else {
      this._schema.isSaving[this.toString()] = true;
      this._schema.db[collection].update(this.attrs.id, this.attrs);
    }

    this._saveAssociations();

    this._schema.isSaving[this.toString()] = false;
    return this;
  }
Create or saves the model.

    ```js
    let post = blogPosts.new({ title: 'Lorem ipsum' });
    post.id; // null

    post.save();
    post.id; // 1

    post.title = 'Hipster ipsum'; // db has not been updated
    post.save();                  // ...now the db is updated
    ```

    @method save
    @return this
    @public