Module: Mongoid::Association::Embedded::Cyclic::ClassMethods

Defined in:
build/mongoid-7.0/lib/mongoid/association/embedded/cyclic.rb

Instance Method Summary collapse

Instance Method Details

#recursively_embeds_many(options = {}) ⇒ Object

Create a cyclic embedded relation that creates a tree hierarchy for the document and many embedded child documents.

This provides the default nomenclature for accessing a parent document or its children.

Examples:

Set up a recursive embeds many.


class Role
  include Mongoid::Document
  recursively_embeds_many
end

The previous example is a shorcut for this.


class Role
  include Mongoid::Document
  embeds_many :child_roles, :class_name => "Role", :cyclic => true
  embedded_in :parent_role, :class_name => "Role", :cyclic => true
end

Since:

  • 2.0.0.rc.1



39
40
41
42
43
44
45
# File 'build/mongoid-7.0/lib/mongoid/association/embedded/cyclic.rb', line 39

def recursively_embeds_many(options = {})
  embeds_many(
      cyclic_child_name,
      options.merge(class_name: self.name, cyclic: true)
  )
  embedded_in cyclic_parent_name, class_name: self.name, cyclic: true
end

#recursively_embeds_one(options = {}) ⇒ Object

Create a cyclic embedded relation that creates a single self referencing relationship for a parent and a single child.

This provides the default nomenclature for accessing a parent document or its children.

Examples:

Set up a recursive embeds one.


class Role
  include Mongoid::Document
  recursively_embeds_one
end

The previous example is a shorcut for this.


class Role
  include Mongoid::Document
  embeds_one :child_role, :class_name => "Role", :cyclic => true
  embedded_in :parent_role, :class_name => "Role", :cyclic => true
end

Since:

  • 2.0.0.rc.1



69
70
71
72
73
74
75
# File 'build/mongoid-7.0/lib/mongoid/association/embedded/cyclic.rb', line 69

def recursively_embeds_one(options = {})
  embeds_one(
      cyclic_child_name(false),
      options.merge(class_name: self.name, cyclic: true)
  )
  embedded_in cyclic_parent_name, class_name: self.name, cyclic: true
end