diff --git a/addon/-private/system/model/internal-model.js b/addon/-private/system/model/internal-model.js index 6cfab4699b6..236dd1617af 100644 --- a/addon/-private/system/model/internal-model.js +++ b/addon/-private/system/model/internal-model.js @@ -106,6 +106,7 @@ export default function InternalModel(type, id, store, _, data) { this.recordReference = new RecordReference(store, this); this.references = {}; this.isReloading = false; + this._isDestroyed = false; this.isError = false; this.error = null; this.__ember_meta__ = null; @@ -272,7 +273,12 @@ InternalModel.prototype = { } }, + get isDestroyed() { + return this._isDestroyed; + }, + destroy() { + this._isDestroyed = true; if (this.record) { return this.record.destroy(); } diff --git a/addon/-private/system/record-array-manager.js b/addon/-private/system/record-array-manager.js index 473040a25e6..1b44f1279d3 100644 --- a/addon/-private/system/record-array-manager.js +++ b/addon/-private/system/record-array-manager.js @@ -100,9 +100,9 @@ export default Ember.Object.extend({ updateRecordArrays() { heimdall.increment(updateRecordArrays); this.changedRecords.forEach(internalModel => { - if (get(internalModel, 'record.isDestroyed') || - get(internalModel, 'record.isDestroying') || - (get(internalModel, 'currentState.stateName') === 'root.deleted.saved')) { + + if (internalModel.isDestroyed || + internalModel.currentState.stateName === 'root.deleted.saved') { this._recordWasDeleted(internalModel); } else { this._recordWasChanged(internalModel);