diff --git a/packages/ember-model/lib/model.js b/packages/ember-model/lib/model.js index c3e50b0..b3810bc 100644 --- a/packages/ember-model/lib/model.js +++ b/packages/ember-model/lib/model.js @@ -128,7 +128,7 @@ Ember.Model = Ember.Object.extend(Ember.Evented, { this._reloadHasManys(); // eagerly load embedded data - var relationships = this.constructor._relationships || [], meta = Ember.meta(this), relationshipKey, relationship, relationshipMeta, relationshipData, relationshipType; + var relationships = this.constructor._relationships || [], meta = Ember.meta(this), relationshipKey, relationship, relationshipMeta, dataKey, relationshipData, relationshipType; for (var i = 0, l = relationships.length; i < l; i++) { relationshipKey = relationships[i]; relationship = (meta.descs || this)[relationshipKey]; @@ -140,7 +140,8 @@ Ember.Model = Ember.Object.extend(Ember.Evented, { relationshipType = Ember.get(Ember.lookup, relationshipType) || this.container.lookupFactory('model:'+ relationshipType); } - relationshipData = data[relationshipKey]; + dataKey = this.dataKey(relationshipKey) + relationshipData = data[dataKey]; if (relationshipData) { relationshipType.load(relationshipData); } diff --git a/packages/ember-model/tests/has_many/embedded_objects_load_test.js b/packages/ember-model/tests/has_many/embedded_objects_load_test.js index a6bd682..a6b9295 100644 --- a/packages/ember-model/tests/has_many/embedded_objects_load_test.js +++ b/packages/ember-model/tests/has_many/embedded_objects_load_test.js @@ -115,3 +115,44 @@ test("loading embedded data into a parent with deleted children deletes the chil equal(post.get('comments.length'), 1); equal(post.get('comments.firstObject.body'), 'new'); }); + +test("loading embedded data into a parent updates the child records with key option", function() { + expect(2); + + var json = { + id: 1, + replies: [ + {id: 1, body: 'new'} + ] + }; + + var Comment = Ember.Model.extend({ + id: attr(), + body: attr() + }); + + Comment.adapter = { + find: function(record, id) { + record.load(id, {body: 'old'}); + } + }; + + var Post = Ember.Model.extend({ + id: attr(), + comments: Ember.hasMany(Comment, {key: 'replies', embedded: true}) + }); + + Post.adapter = { + find: function(record, id) { + record.load(id, {replies: []}); + } + }; + + var comment = Comment.find(1); + equal(comment.get('body'), 'old'); + + var post = Post.find(1); + post.load(1, json); + + equal(comment.get('body'), 'new'); +});