active_model_serializers/lib/active_model
Jo Liss ee3cec3d0c When objects are sideloaded multiple times, serialize them only once
To achieve this, we make the following change when sideloading: Instead
of serializing associations and discarding duplicate *hashes*, we
memorize the *objects* (records) that we have already serialized, and
only serialize those that are new.

This change is mostly transparent, and brings down serialization time
from 3.1 seconds to 1.0 seconds on my set of sample data.

There is one change in the behavior: If you sideload the same object
multiple times, and it yields different hashes, like so:

    embed :ids, include: true
    has_many :comments
    has_many :recent_comments, root: comments, serializer: CommentShortSerializer

then previously, it would be included multiple times, whereas now, the
first hash wins. (I haven't actually tested this.) I don't know that
either option is preferable. It's not covered by the test suite, and I
think it's an edge case that is OK to ignore entirely.
2012-10-29 23:15:32 +01:00
..
serializer When objects are sideloaded multiple times, serialize them only once 2012-10-29 23:15:32 +01:00
serializers Allow other resource overrides 2012-06-05 23:08:01 +02:00
array_serializer.rb move ArraySerializer to separate file 2012-09-18 01:28:07 +02:00
ordered_set.rb move OrderedSet to separate file 2012-09-18 01:28:07 +02:00
serializer.rb When objects are sideloaded multiple times, serialize them only once 2012-10-29 23:15:32 +01:00