diff --git a/lib/active_model_serializers/adapter/json_api/relationship.rb b/lib/active_model_serializers/adapter/json_api/relationship.rb index f26dfbd4..2879e3eb 100644 --- a/lib/active_model_serializers/adapter/json_api/relationship.rb +++ b/lib/active_model_serializers/adapter/json_api/relationship.rb @@ -55,7 +55,6 @@ module ActiveModelSerializers else association.reflection.type.to_s end - # TODO: probably return nil if association.object is nil? ResourceIdentifier.for_type_with_id(type, id, serializable_resource_options) else # TODO(BF): Process relationship without evaluating lazy_association diff --git a/lib/active_model_serializers/adapter/json_api/resource_identifier.rb b/lib/active_model_serializers/adapter/json_api/resource_identifier.rb index 8aee0a7d..e321914e 100644 --- a/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +++ b/lib/active_model_serializers/adapter/json_api/resource_identifier.rb @@ -13,7 +13,7 @@ module ActiveModelSerializers type = inflect_type(type) type = type_for(:no_class_needed, type, options) if id.blank? - { type: type } + nil else { id: id.to_s, type: type } end diff --git a/test/adapter/json_api/relationship_test.rb b/test/adapter/json_api/relationship_test.rb index 9a21f0a7..38a67fe2 100644 --- a/test/adapter/json_api/relationship_test.rb +++ b/test/adapter/json_api/relationship_test.rb @@ -36,6 +36,7 @@ module ActiveModelSerializers end def test_relationship_with_nil_model_and_belongs_to_id_on_self + original_config = ActiveModelSerializers.config.jsonapi_use_foreign_key_on_belongs_to_relationship ActiveModelSerializers.config.jsonapi_use_foreign_key_on_belongs_to_relationship = true expected = { data: nil } @@ -46,7 +47,10 @@ module ActiveModelSerializers actual = build_serializer_and_serialize_relationship(model, relationship_name) do belongs_to :blog end + assert_equal(expected, actual) + ensure + ActiveModelSerializers.config.jsonapi_use_foreign_key_on_belongs_to_relationship = original_config end def test_relationship_with_data_array diff --git a/test/adapter/json_api/type_test.rb b/test/adapter/json_api/type_test.rb index 8a7aaa28..56f7efcb 100644 --- a/test/adapter/json_api/type_test.rb +++ b/test/adapter/json_api/type_test.rb @@ -147,8 +147,7 @@ module ActiveModelSerializers def test_for_type_with_id_given_blank_id id = '' actual = ResourceIdentifier.for_type_with_id('admin_user', id, {}) - expected = { type: 'admin-users' } - assert_equal actual, expected + assert_nil actual end def test_for_type_with_id_inflected