server/src/main/webapp/static/lib/backbone-relational.js
changeset 51 3247fccfbd3f
parent 47 267d67791e05
--- a/server/src/main/webapp/static/lib/backbone-relational.js	Tue Jan 01 09:28:03 2013 +0100
+++ b/server/src/main/webapp/static/lib/backbone-relational.js	Mon Jan 14 16:00:07 2013 +0100
@@ -1,4 +1,4 @@
-/* vim: set tabstop=4:softtabstop=4:shiftwidth=4:noexpandtab */
+/* vim: set tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab: */
 /**
  * Backbone-relational.js 0.7.0
  * (c) 2011-2013 Paul Uithol
@@ -1527,25 +1527,25 @@
 		/**
 		 * Find an instance of `this` type in 'Backbone.Relational.store'.
 		 * - If `attributes` is a string or a number, `findOrCreate` will just query the `store` and return a model if found.
-		 * - If `attributes` is an object, the model will be updated with `attributes` if found.
+		 * - If `attributes` is an object and is found in the store, the model will be updated with `attributes` unless `options.update` is `false`. 
 		 *   Otherwise, a new model is created with `attributes` (unless `options.create` is explicitly set to `false`).
 		 * @param {Object|String|Number} attributes Either a model's id, or the attributes used to create or update a model.
-		 * @param {Object} [options]
-		 * @param {Boolean} [options.create=true]
+		 * @param {Object} [options.create=true, options.update=true]
 		 * @return {Backbone.RelationalModel}
 		 */
 		findOrCreate: function( attributes, options ) {
+			options || ( options = {} );
 			var parsedAttributes = (_.isObject( attributes ) && this.prototype.parse) ? this.prototype.parse( attributes ) : attributes;
 			// Try to find an instance of 'this' model type in the store
 			var model = Backbone.Relational.store.find( this, parsedAttributes );
 
-			// If we found an instance, update it with the data in 'item'; if not, create an instance
-			// (unless 'options.create' is false).
+			// If we found an instance, update it with the data in 'item' (unless 'options.update' is false).
+			// If not, create an instance (unless 'options.create' is false).
 			if ( _.isObject( attributes ) ) {
-				if ( model ) {
+				if ( model && options.update !== false ) {
 					model.set( parsedAttributes, options );
 				}
-				else if ( !options || ( options && options.create !== false ) ) {
+				else if ( !model && options.create !== false ) {
 					model = this.build( attributes, options );
 				}
 			}