Models

AJAX Abstraction for a Single Resource

save

The save() method is used to create or update a resource, depending on whether the model has an id.

Usage

You can learn about how this method can be used to create resources here, and about how it can be used to update resources here.

Default Implementation

save: function(key, val, options) {
  const model = this;
  let attrs;

  if (key == null || typeof key === 'object') {
    attrs = key;
    options = val;
  } else {
    (attrs = {})[key] = val;
  }

  options = _.extend({ validate: true, parse: true }, options);

  if (attrs) {
    if (!this.set(attrs, options)) {
      return false
    };
  } else if (!this._validate(attrs, options)) {
    return false;
  }

  options.success = function(attributes) {
    if (options.parse) {
      attributes = model.parse(attributes, options);
    }

    if (attributes && !model.set(attributes, options)) {
      return false;
    }
  };

  const method = this.isNew() ? 'create' : (
    options.patch ? 'patch' : 'update'
  );

  if (method === 'patch' && !options.attrs) {
    options.attrs = attrs
  };

  return this.sync(method, this, options);
},