backbone-relational-rails 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -18,7 +18,7 @@ Add the following directive to your Javascript manifest file (application.js):
18
18
 
19
19
  ## Versioning
20
20
 
21
- backbone-relational-rails 0.7.0 == Backbone-relational 0.7.0
21
+ backbone-relational-rails 0.7.1 == Backbone-relational 0.7.1
22
22
 
23
23
  Every attempt is made to mirror the currently shipping Backbone-relational version number wherever possible.
24
24
  The major, minor, and patch version numbers will always represent the Backbone-relational version. Should a gem
@@ -26,7 +26,7 @@ bug be discovered, a 4th version identifier will be added and incremented.
26
26
 
27
27
  ## Backbone Version
28
28
 
29
- This release of Backbone-relational is only compatible with Backbone >= 0.9.9.
29
+ This release of Backbone-relational is only compatible with Backbone >= 0.9.10.
30
30
 
31
31
  ## Acknowledgements
32
32
 
@@ -1,7 +1,7 @@
1
1
  module Backbone
2
2
  module Relational
3
3
  module Rails
4
- VERSION = "0.7.0"
4
+ VERSION = "0.7.1"
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
- /* vim: set tabstop=4:softtabstop=4:shiftwidth=4:noexpandtab */
1
+ /* vim: set tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab: */
2
2
  /**
3
- * Backbone-relational.js 0.7.0
4
- * (c) 2011-2013 Paul Uithol
3
+ * Backbone-relational.js 0.7.1
4
+ * (c) 2011-2013 Paul Uithol and contributors (https://github.com/PaulUithol/Backbone-relational/graphs/contributors)
5
5
  *
6
6
  * Backbone-relational may be freely distributed under the MIT license; see the accompanying LICENSE.txt.
7
7
  * For details and documentation: https://github.com/PaulUithol/Backbone-relational.
@@ -234,8 +234,8 @@
234
234
  }
235
235
 
236
236
  var coll = _.detect( this._collections, function( c ) {
237
- return c.model === rootModel;
238
- });
237
+ return c.model === rootModel;
238
+ });
239
239
 
240
240
  if ( !coll ) {
241
241
  coll = this._createCollection( rootModel );
@@ -445,6 +445,10 @@
445
445
  if ( instance ) {
446
446
  this.initialize();
447
447
 
448
+ if ( options.autoFetch ) {
449
+ this.instance.fetchRelated( options.key, _.isObject( options.autoFetch ) ? options.autoFetch : {} );
450
+ }
451
+
448
452
  // When a model in the store is destroyed, check if it is 'this.instance'.
449
453
  Backbone.Relational.store.getCollection( this.instance )
450
454
  .bind( 'relational:remove', this._modelRemovedFromCollection );
@@ -462,7 +466,8 @@
462
466
  options: {
463
467
  createModels: true,
464
468
  includeInJSON: true,
465
- isAutoRelation: false
469
+ isAutoRelation: false,
470
+ autoFetch: false
466
471
  },
467
472
 
468
473
  instance: null,
@@ -549,7 +554,7 @@
549
554
  this.related = related;
550
555
 
551
556
  this.instance.acquire();
552
- this.instance.set( this.key, related, _.defaults( options || {}, { silent: true } ) );
557
+ this.instance.attributes[ this.key ] = related;
553
558
  this.instance.release();
554
559
  },
555
560
 
@@ -1313,17 +1318,6 @@
1313
1318
 
1314
1319
  return result;
1315
1320
  },
1316
-
1317
- /**
1318
- * Override 'change', so the change will only execute after 'set' has finised (relations are updated),
1319
- * and 'previousAttributes' will be available when the event is fired.
1320
- */
1321
- change: function( options ) {
1322
- var dit = this, args = arguments;
1323
- Backbone.Relational.eventQueue.add( function() {
1324
- Backbone.Model.prototype.change.apply( dit, args );
1325
- });
1326
- },
1327
1321
 
1328
1322
  clone: function() {
1329
1323
  var attributes = _.clone( this.attributes );
@@ -1522,25 +1516,27 @@
1522
1516
  /**
1523
1517
  * Find an instance of `this` type in 'Backbone.Relational.store'.
1524
1518
  * - If `attributes` is a string or a number, `findOrCreate` will just query the `store` and return a model if found.
1525
- * - If `attributes` is an object, the model will be updated with `attributes` if found.
1519
+ * - If `attributes` is an object and is found in the store, the model will be updated with `attributes` unless `options.update` is `false`.
1526
1520
  * Otherwise, a new model is created with `attributes` (unless `options.create` is explicitly set to `false`).
1527
1521
  * @param {Object|String|Number} attributes Either a model's id, or the attributes used to create or update a model.
1528
1522
  * @param {Object} [options]
1529
1523
  * @param {Boolean} [options.create=true]
1524
+ * @param {Boolean} [options.update=true]
1530
1525
  * @return {Backbone.RelationalModel}
1531
1526
  */
1532
1527
  findOrCreate: function( attributes, options ) {
1528
+ options || ( options = {} );
1533
1529
  var parsedAttributes = (_.isObject( attributes ) && this.prototype.parse) ? this.prototype.parse( attributes ) : attributes;
1534
1530
  // Try to find an instance of 'this' model type in the store
1535
1531
  var model = Backbone.Relational.store.find( this, parsedAttributes );
1536
1532
 
1537
- // If we found an instance, update it with the data in 'item'; if not, create an instance
1538
- // (unless 'options.create' is false).
1533
+ // If we found an instance, update it with the data in 'item' (unless 'options.update' is false).
1534
+ // If not, create an instance (unless 'options.create' is false).
1539
1535
  if ( _.isObject( attributes ) ) {
1540
- if ( model ) {
1536
+ if ( model && options.update !== false ) {
1541
1537
  model.set( parsedAttributes, options );
1542
1538
  }
1543
- else if ( !options || ( options && options.create !== false ) ) {
1539
+ else if ( !model && options.create !== false ) {
1544
1540
  model = this.build( attributes, options );
1545
1541
  }
1546
1542
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backbone-relational-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -56,7 +56,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
56
  version: '0'
57
57
  segments:
58
58
  - 0
59
- hash: 4485082081012907281
59
+ hash: -2197334988705490769
60
60
  required_rubygems_version: !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
@@ -65,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  version: '0'
66
66
  segments:
67
67
  - 0
68
- hash: 4485082081012907281
68
+ hash: -2197334988705490769
69
69
  requirements: []
70
70
  rubyforge_project:
71
71
  rubygems_version: 1.8.24