Remove nil relationships links (#1833)

This commit is contained in:
Yohan Robert 2016-07-12 14:02:34 +02:00 committed by GitHub
parent 91b37cee2c
commit 9a206a1f5d
3 changed files with 14 additions and 2 deletions

View File

@ -8,6 +8,8 @@ Features:
Fixes:
- [#1833](https://github.com/rails-api/active_model_serializers/pull/1833) Remove relationship links if they are null (@groyoh)
Misc:
### [v0.10.2 (2016-07-05)](https://github.com/rails-api/active_model_serializers/compare/v0.10.1...v0.10.2)

View File

@ -13,7 +13,8 @@ module ActiveModelSerializers
@serializable_resource_options = serializable_resource_options
@data = data_for(serializer)
@links = args.fetch(:links, {}).each_with_object({}) do |(key, value), hash|
hash[key] = ActiveModelSerializers::Adapter::JsonApi::Link.new(parent_serializer, value).as_json
result = Link.new(parent_serializer, value).as_json
hash[key] = result if result
end
meta = args.fetch(:meta, nil)
@meta = meta.respond_to?(:call) ? parent_serializer.instance_eval(&meta) : meta

View File

@ -13,8 +13,9 @@ module ActiveModel
end
has_one :profile do
id = object.profile.id
link :related do
"//example.com/profiles/#{object.profile.id}"
"//example.com/profiles/#{id}" if id != 123
end
end
@ -113,6 +114,14 @@ module ActiveModel
assert_relationship(:profile, expected)
end
def test_relationship_nil_link
@author.profile.id = 123
expected = {
data: { id: '123', type: 'profiles' }
}
assert_relationship(:profile, expected)
end
def test_relationship_block_link_href
expected = {
data: [{ id: '1337', type: 'locations' }],