Skip to content

Fix for Mongoid Identity map combined with Scoped Orderable#16

Merged
pyromaniac merged 3 commits intomongoid:masterfrom
johnnyshields:master
Oct 11, 2013
Merged

Fix for Mongoid Identity map combined with Scoped Orderable#16
pyromaniac merged 3 commits intomongoid:masterfrom
johnnyshields:master

Conversation

@johnnyshields
Copy link
Copy Markdown
Member

I found an edge case when using Mongoid Identity Map combined with Scoped Orderable. Scoped Orderable uses a method orderable_scope_changed? which uses a db query to check that item is no longer present in the original scope. However, when the Identity Map is enabled, this query is intercepted and it uses the (now stale) cached object, which gives a false result the item still appears to be in the original scope.

The solution is to wrap the query in a Mongoid.unit_of_work block to bypass the identity map on a one-off basis. See http://mongoid.org/en/mongoid/docs/identity_map.html.

I've committed the specs before the code fix so you can checkout commit ef3bb39 and replay the failing case.

pyromaniac added a commit that referenced this pull request Oct 11, 2013
Fix for Mongoid Identity map combined with Scoped Orderable
@pyromaniac pyromaniac merged commit 5cd162f into mongoid:master Oct 11, 2013
@pyromaniac
Copy link
Copy Markdown
Collaborator

Great work! Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants