diff --git a/lib/active_model_serializers/adapter/json_api.rb b/lib/active_model_serializers/adapter/json_api.rb index c324798ca..5d3f16c23 100644 --- a/lib/active_model_serializers/adapter/json_api.rb +++ b/lib/active_model_serializers/adapter/json_api.rb @@ -464,7 +464,8 @@ def relationships_for(serializer, requested_associations, options) # }.reject! {|_,v| v.nil? } def links_for(serializer) serializer._links.each_with_object({}) do |(name, value), hash| - hash[name] = Link.new(serializer, value).as_json + result = Link.new(serializer, value).as_json + hash[name] = result if result end end diff --git a/lib/active_model_serializers/adapter/json_api/link.rb b/lib/active_model_serializers/adapter/json_api/link.rb index 40c5d489b..6f1ad4dda 100644 --- a/lib/active_model_serializers/adapter/json_api/link.rb +++ b/lib/active_model_serializers/adapter/json_api/link.rb @@ -71,6 +71,7 @@ def as_json hash[:href] = @href if defined?(@href) hash[:meta] = @meta if defined?(@meta) + return nil if hash.empty? hash end diff --git a/test/adapter/json_api/links_test.rb b/test/adapter/json_api/links_test.rb index 8f26f34a2..74c933fec 100644 --- a/test/adapter/json_api/links_test.rb +++ b/test/adapter/json_api/links_test.rb @@ -17,6 +17,7 @@ class LinkAuthorSerializer < ActiveModel::Serializer link :yet_another do "http://example.com/resource/#{object.id}" end + link(:nil) { nil } end def setup