From 7445e898e822f1bae3a9bd2d3fc1388e311e3ce0 Mon Sep 17 00:00:00 2001 From: Larry Gebhardt Date: Tue, 9 Jul 2019 15:19:26 -0400 Subject: [PATCH 1/2] Test remove relationship does not remove related resource --- test/controllers/controller_test.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/controllers/controller_test.rb b/test/controllers/controller_test.rb index 74743de2f..fcc9a9819 100644 --- a/test/controllers/controller_test.rb +++ b/test/controllers/controller_test.rb @@ -1396,6 +1396,25 @@ def test_update_relationship_to_one_singular_param assert_equal ruby.id, post_object.section_id end + def test_remove_relationship_to_many_belongs_to + set_content_type_header! + c = Comment.find(3) + p = Post.find(2) + total_comment_count = Comment.count + post_comment_count = p.comments.count + + put :destroy_relationship, params: {post_id: "#{p.id}", relationship: 'comments', data: [{type: 'comments', id: "#{c.id}"}]} + + assert_response :no_content + p = Post.find(2) + c = Comment.find(3) + + assert_equal post_comment_count - 1, p.comments.length + assert_equal total_comment_count, Comment.count + + assert_nil c.post_id + end + def test_update_relationship_to_many_join_table_single set_content_type_header! put :update_relationship, params: {post_id: 3, relationship: 'tags', data: []} From 436f062e1fe0fb680f852bc2dd3817d7e9c1fb09 Mon Sep 17 00:00:00 2001 From: Larry Gebhardt Date: Tue, 9 Jul 2019 16:07:48 -0400 Subject: [PATCH 2/2] Revert "Use `destroy` instead of `delete` to ensure callbacks are called" reverts commit 565d4b6edbc75eee5f8d608f76306129dff3fd65 --- lib/jsonapi/basic_resource.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jsonapi/basic_resource.rb b/lib/jsonapi/basic_resource.rb index bc18c96bf..edffb4ae1 100644 --- a/lib/jsonapi/basic_resource.rb +++ b/lib/jsonapi/basic_resource.rb @@ -365,7 +365,7 @@ def _remove_to_many_link(relationship_type, key, options) @reload_needed = true else - @model.public_send(relationship.relation_name(context: @context)).destroy(key) + @model.public_send(relationship.relation_name(context: @context)).delete(key) end :completed