This repository has been archived by the owner on Jan 2, 2023. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements #139
Problem
Sometimes resources require to have polymorphic relations.
Garage
has manyvehicles
in it. Vehicle could has it's own typeCar
orBike
.Garage
has oneowner
. Owner could be of typePerson
orOrganization
.Solution
Solution is pretty simple. We are providing
SerializerRegistry
instead of concreteSerializer
to polymorphic collection or resource and it will try to find serializer which mapped to this serializable object.Collections
VehicleSerializerRegistry
which will describe mappings between serializable object & serializer.GarageSerializer
usePolymorphicCollection
instead ofCollection
and passVehicleSerializerRegistry
to it.Resource
OwnerSerializerRegistry
which will describe mappings between serializable object & serializer.GarageSerializer
usePolymorphicResource
instead ofResource
and passOwnerSerializerRegistry
to it.In closing
Be careful with polymorphism, because there are some edge cases which were revealed in a discussion with Michael Hibay on discuss.