@@ -17,13 +17,14 @@ const iterateRelations = function(record, relations, callback) {
17
17
let kind = metadata . kind ;
18
18
let relatedRecord = record . get ( relationName ) ;
19
19
let manyToManyDeleted = record . manyToManyMarkedForDeletionModels ( relationName ) ;
20
+ let isManyToOneDelete = record . markedForManyToOneDeletion ( relationName ) ;
20
21
21
22
if ( metadata . options . async !== false ) {
22
23
relatedRecord = relatedRecord . get ( 'content' ) ;
23
24
}
24
25
25
26
if ( relatedRecord ) {
26
- callback ( relationName , kind , relatedRecord , subRelations , manyToManyDeleted ) ;
27
+ callback ( relationName , kind , relatedRecord , subRelations , manyToManyDeleted , isManyToOneDelete ) ;
27
28
}
28
29
} ) ;
29
30
} ;
@@ -53,7 +54,7 @@ const attributesFor = function(record) {
53
54
return attrs ;
54
55
} ;
55
56
56
- const jsonapiPayload = function ( record , isManyToManyDelete ) {
57
+ const jsonapiPayload = function ( record , relationshipMarkedForDeletion ) {
57
58
let attributes = attributesFor ( record ) ;
58
59
59
60
let payload = { type : record . jsonapiType ( ) } ;
@@ -69,7 +70,7 @@ const jsonapiPayload = function(record, isManyToManyDelete) {
69
70
else if ( record . get ( 'markedForDestruction' ) ) {
70
71
payload [ 'method' ] = 'destroy' ;
71
72
}
72
- else if ( record . get ( 'markedForDeletion' ) || isManyToManyDelete ) {
73
+ else if ( record . get ( 'markedForDeletion' ) || relationshipMarkedForDeletion ) {
73
74
payload [ 'method' ] = 'disassociate' ;
74
75
}
75
76
else if ( record . get ( 'currentState.isDirty' ) ) {
@@ -131,21 +132,21 @@ const hasManyData = function(relationName, relatedRecords, subRelations, manyToM
131
132
return { data : payloads } ;
132
133
} ;
133
134
134
- const belongsToData = function ( relatedRecord , subRelations , includedRecords ) {
135
- let payload = jsonapiPayload ( relatedRecord ) ;
135
+ const belongsToData = function ( relatedRecord , subRelations , isManyToOneDelete , includedRecords ) {
136
+ let payload = jsonapiPayload ( relatedRecord , isManyToOneDelete ) ;
136
137
processRelationships ( subRelations , payload , relatedRecord , includedRecords ) ;
137
138
addToIncludes ( payload , includedRecords ) ;
138
139
139
140
return { data : payloadForRelationship ( payload ) } ;
140
141
} ;
141
142
142
- const processRelationship = function ( name , kind , relationData , subRelations , manyToManyDeleted , includedRecords , callback ) {
143
+ const processRelationship = function ( name , kind , relationData , subRelations , manyToManyDeleted , isManyToOneDelete , includedRecords , callback ) {
143
144
let payload = null ;
144
145
145
146
if ( kind === 'hasMany' ) {
146
147
payload = hasManyData ( name , relationData , subRelations , manyToManyDeleted , includedRecords ) ;
147
148
} else {
148
- payload = belongsToData ( relationData , subRelations , includedRecords ) ;
149
+ payload = belongsToData ( relationData , subRelations , isManyToOneDelete , includedRecords ) ;
149
150
}
150
151
151
152
if ( payload && payload . data ) {
@@ -157,8 +158,8 @@ const processRelationships = function(relationshipHash, jsonData, record, includ
157
158
if ( isPresentObject ( relationshipHash ) ) {
158
159
jsonData . relationships = { } ;
159
160
160
- iterateRelations ( record , relationshipHash , ( name , kind , related , subRelations , manyToManyDeleted ) => {
161
- processRelationship ( name , kind , related , subRelations , manyToManyDeleted , includedRecords , ( payload ) => {
161
+ iterateRelations ( record , relationshipHash , ( name , kind , related , subRelations , manyToManyDeleted , isManyToOneDelete ) => {
162
+ processRelationship ( name , kind , related , subRelations , manyToManyDeleted , isManyToOneDelete , includedRecords , ( payload ) => {
162
163
let serializer = record . store . serializerFor ( record . constructor . modelName ) ;
163
164
let serializedName = serializer . keyForRelationship ( name ) ;
164
165
jsonData . relationships [ serializedName ] = payload ;
0 commit comments