Fix for caching referenced documents belonging to a polymorphic collection #4
+75
−1
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.
cc: @aaw
The cause of this bug is that when we generate cache keys for storing referenced documents, we use the parent document's interpretation of the referenced document's class, which may differ from the referenced document's own interpretation of its class, in the case of polymorphic collections. Thus, when we invalidate the referenced document (by its actual class name), the parent document never catches wind of the invalidation.
Incidentally, this was not a problem for embedded documents, since in the current code we always materialize the embedded document as a full object, rather than just via Mongoid metadata. I wrote a spec for embedded documents anyway.