Class Mongoid::Relations::Proxy
In: lib/mongoid/relations/proxy.rb
Parent: Object

This class is the superclass for all relation proxy objects, and contains common behaviour for all of them.

Methods

Included Modules

Threaded::Lifecycle

Attributes

base  [RW] 
loaded  [RW] 
metadata  [RW] 
target  [RW] 

Public Instance methods

Convenience for setting the target and the metadata properties since all proxies will need to do this.

@example Initialize the proxy.

  proxy.init(person, name, metadata)

@param [ Document ] base The base document on the proxy. @param [ Document, Array<Document> ] target The target of the proxy. @param [ Metadata ] metadata The relation‘s metadata.

@since 2.0.0.rc.1

The default substitutable object for a relation proxy is the clone of the target.

@example Get the substitutable.

  proxy.substitutable

@return [ Object ] A clone of the target.

@since 2.1.6

Protected Instance methods

Takes the supplied document and sets the metadata on it.

@example Set the metadata.

  proxt.characterize_one(name)

@param [ Document ] document The document to set on.

@since 2.0.0.rc.4

Get the collection from the root of the hierarchy.

@example Get the collection.

  relation.collection

@return [ Collection ] The root‘s collection.

@since 2.0.0

Return a new document for the type of class we want to instantiate. If the type is provided use that, otherwise the klass from the metadata.

@example Get an instantiated document.

  proxy.instantiated(Person)

@param [ Class ] type The type of class to instantiate.

@return [ Document ] The freshly created document.

@since 2.0.0.rc.1

Default behavior of method missing should be to delegate all calls to the target of the proxy. This can be overridden in special cases.

@param [ String, Symbol ] name The name of the method. @param [ Array ] *args The arguments passed to the method.

When the base document illegally references an embedded document this error will get raised.

@example Raise the error.

  relation.raise_mixed

@raise [ Errors::MixedRelations ] The error.

@since 2.0.0

When the base is not yet saved and the user calls create or create! on the relation, this error will get raised.

@example Raise the error.

  relation.raise_unsaved(post)

@param [ Document ] doc The child document getting created.

@raise [ Errors::UnsavedDocument ] The error.

@since 2.0.0.rc.6

Get the class of the root document in the hierarchy.

@example Get the root‘s class.

  proxy.root_class

@return [ Class ] The root class.

@since 2.1.8

[Validate]