Class: Mongoid::Relations::Builders::Referenced::ManyToMany

Inherits:
Mongoid::Relations::Builder show all
Defined in:
lib/mongoid/relations/builders/referenced/many_to_many.rb

Overview

Since:

  • 2.0.0.rc.1

Instance Attribute Summary

Attributes inherited from Mongoid::Relations::Builder

#base, #metadata, #object

Instance Method Summary collapse

Methods inherited from Mongoid::Relations::Builder

#initialize

Constructor Details

This class inherits a constructor from Mongoid::Relations::Builder

Instance Method Details

#build(type = nil) ⇒ Array<Document>

This builder either takes a hash and queries for the object or an array of documents, where it will just return them.

Examples:

Build the documents.

Builder.new(meta, attrs).build

Parameters:

  • type (String) (defaults to: nil)

    The type of document to query for.

Returns:

Since:

  • 2.0.0.rc.1


17
18
19
20
21
22
# File 'lib/mongoid/relations/builders/referenced/many_to_many.rb', line 17

def build(type = nil)
  return object.try(:dup) unless query?
  ids = object || []
  crit = .criteria(ids, base.class)
  IdentityMap.get(crit.klass, ids) || crit
end

#query?true, false

Do we need to perform a database query? It will be so if the object we have is not a document.

Examples:

Should we query the database?

builder.query?

Returns:

  • (true, false)

    Whether a database query should happen.

Since:

  • 2.0.0.rc.1


33
34
35
# File 'lib/mongoid/relations/builders/referenced/many_to_many.rb', line 33

def query?
  object.nil? || !object.first.is_a?(Mongoid::Document)
end