Sha256: f9c2fee9276f291aa27739543061a401a51ae3d3a01e278b732d970e4c9b1da5

Contents?: true

Size: 1.86 KB

Versions: 3

Compression:

Stored size: 1.86 KB

Contents

= 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 <tt>@user</tt> is a valid <tt>User</tt> with an <tt>id</tt> of 42 and <tt>login</tt> of '<tt>jsmith</tt>':

    @post = Post.create(:title => 'First Post', :body => 'This is a post.', :author => @user)

This will create a new <tt>Post</tt> document, with an <tt>author</tt> 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 <tt>login</tt> 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 (c) 2010 Matthew Gibbons. See LICENSE for details.

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongoid_cached_document-0.2.0 README.rdoc
mongoid_cached_document-0.1.3 README.rdoc
mongoid_cached_document-0.1.2 README.rdoc