About Mongoid::CachedDocument¶ ↑
Mongoid is an ODM (Object-Document-Mapper) framework for MongoDB in Ruby. Mongoid::CachedDocument adds a new field type of the same name that supports the caching attributes from a related document.
Example¶ ↑
class User include Mongoid::Document field :login #... end class Post include Mongoid::Document field :title field :body field :author, :type => Mongoid::CachedDocument end
Assuming @user
is a valid User
with an id
of 42 and login
of ‘jsmith
’:
@post = Post.create(:title => 'First Post', :body => 'This is a post.', :author => @user)
This will create a new Post
document, with an author
field, the content of which is a hash:
{ '_type' => 'User', '_id' = 42 } @post.author._type => 'User' @post.author._id => 42
Attempting to get the user’s login
will cause the real user document to be fetched from the collection, which replaces the cached values.
class User #... def cachable_attributes [ :login ] end end
With the above class definition, the cached attributes will be:
{ '_type' => 'User', '_id' = 42, 'login' => 'jsmith' }
To use the above in a criteria:
Post.criteria.where('author.login' => 'jsmith')
Enjoy!
Note on Patches/Pull Requests¶ ↑
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright¶ ↑
Copyright © 2010 Matthew Gibbons. See LICENSE for details.