Sha256: 246c48d11e70bfb345a88ffc9972fe72af1159fcb238457c47fc4d63d91d1172
Contents?: true
Size: 1.08 KB
Versions: 4
Compression:
Stored size: 1.08 KB
Contents
# encoding: utf-8 module Mongoid #:nodoc: class Identity #:nodoc: class << self # Create the identity for the +Document+. # # The id will be set in either in the form of a Mongo # +ObjectID+ or a composite key set up by defining a key on the document. # # The _type will be set to the document's class name. def create(doc) identify(doc); type(doc); doc end protected # Return the proper id for the document. def generate_id id = BSON::ObjectID.new Mongoid.use_object_ids ? id : id.to_s end # Set the id for the document. def identify(doc) doc.id = compose(doc).join(" ").identify if doc.primary_key doc.id = generate_id if doc.id.blank? end # Set the _type field on the document. def type(doc) doc._type = doc.class.name if doc.hereditary? end # Generates the composite key for a document. def compose(doc) doc.primary_key.collect { |key| doc.attributes[key] }.reject { |val| val.nil? } end end end end
Version data entries
4 entries across 4 versions & 2 rubygems
Version | Path |
---|---|
mongoid-1.9.1 | lib/mongoid/identity.rb |
chhean-mongoid-2.0.1.beta1 | lib/mongoid/identity.rb |
mongoid-2.0.0.beta.5 | lib/mongoid/identity.rb |
mongoid-1.9.0 | lib/mongoid/identity.rb |