diff --git a/packages/ember-data/lib/system/relationships/state/belongs-to.js b/packages/ember-data/lib/system/relationships/state/belongs-to.js index 7409bd77925..8714d545024 100644 --- a/packages/ember-data/lib/system/relationships/state/belongs-to.js +++ b/packages/ember-data/lib/system/relationships/state/belongs-to.js @@ -86,7 +86,7 @@ BelongsToRelationship.prototype.addRecord = function(newRecord) { BelongsToRelationship.prototype.setRecordPromise = function(newPromise) { var content = newPromise.get && newPromise.get('content'); Ember.assert("You passed in a promise that did not originate from an EmberData relationship. You can only pass promises that come from a belongsTo or hasMany relationship to the get call.", content !== undefined); - this.setRecord(content); + this.setRecord(content ? content._internalModel : content); }; BelongsToRelationship.prototype._super$removeRecordFromOwn = Relationship.prototype.removeRecordFromOwn; @@ -137,7 +137,7 @@ BelongsToRelationship.prototype.getRecord = function() { return PromiseObject.create({ promise: promise, - content: this.inverseRecord + content: this.inverseRecord ? this.inverseRecord.getRecord() : null }); } else { if (this.inverseRecord === null) { diff --git a/packages/ember-data/tests/integration/relationships/belongs-to-test.js b/packages/ember-data/tests/integration/relationships/belongs-to-test.js index 5c3a5399989..fe412a23424 100644 --- a/packages/ember-data/tests/integration/relationships/belongs-to-test.js +++ b/packages/ember-data/tests/integration/relationships/belongs-to-test.js @@ -320,6 +320,34 @@ test("A record with an async belongsTo relationship returning null should resolv })); }); +test("A record can be created with a resolved belongsTo promise", function() { + expect(1); + + var Group = DS.Model.extend({ + people: DS.hasMany() + }); + + var Person = DS.Model.extend({ + group: DS.belongsTo({ async: true }) + }); + + env.registry.register('model:group', Group); + env.registry.register('model:person', Person); + + var group; + run(function() { + group = store.push('group', { id: 1 }); + }); + + var groupPromise = store.find('group', 1); + groupPromise.then(async(function(group) { + var person = env.store.createRecord('person', { + group: groupPromise + }); + equal(person.get('group.content'), group); + })); +}); + test("polymorphic belongsTo type-checks check the superclass when MODEL_FACTORY_INJECTIONS is enabled", function() { expect(1);