module Mongoid::Association::Embedded::Cyclic::ClassMethods
Public Instance Methods
Create a cyclic embedded association that creates a tree hierarchy for the document and many embedded child documents.
@example Set up a recursive embeds many.
class Role include Mongoid::Document recursively_embeds_many end
@example 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
This provides the default nomenclature for accessing a parent document or its children.
@since 2.0.0.rc.1
# File lib/mongoid/association/embedded/cyclic.rb, line 41 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
Create a cyclic embedded association that creates a single self referencing relationship for a parent and a single child.
@example Set up a recursive embeds one.
class Role include Mongoid::Document recursively_embeds_one end
@example 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
This provides the default nomenclature for accessing a parent document or its children.
@since 2.0.0.rc.1
# File lib/mongoid/association/embedded/cyclic.rb, line 71 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
Private Instance Methods
Determines the child name given the class.
@example Determine the child name.
Role.cyclic_child_name
@param [ true, false ] many Is the a many association?
@return [ String ] “child_” plus the class name underscored in
singular or plural form.
@since 2.0.0.rc.1
# File lib/mongoid/association/embedded/cyclic.rb, line 104 def cyclic_child_name(many = true) ("child_#{self.name.demodulize.underscore.send(many ? :pluralize : :singularize)}").to_sym end
Determines the parent name given the class.
@example Determine the parent name.
Role.cyclic_parent_name
@return [ String ] “parent_” plus the class name underscored.
@since 2.0.0.rc.1
# File lib/mongoid/association/embedded/cyclic.rb, line 89 def cyclic_parent_name ("parent_#{self.name.demodulize.underscore.singularize}").to_sym end