Class: Mongoid::Relations::Cascading::Delete

Inherits:
Object
  • Object
show all
Defined in:
lib/mongoid/relations/cascading/delete.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document, metadata) ⇒ Strategy

Initialize the new cascade strategy, which will set up the relation and the metadata.

Examples:

Instantiate the strategy

Strategy.new(document, )

Parameters:

  • document (Document)

    The document to cascade from.

  • metadata (Metadata)

    The relation’s metadata.



19
20
21
22
# File 'lib/mongoid/relations/cascading/delete.rb', line 19

def initialize(document, )
  @document, @metadata = document, 
  @relation = document.send(.name)
end

Instance Attribute Details

#documentObject

Returns the value of attribute document.



7
8
9
# File 'lib/mongoid/relations/cascading/delete.rb', line 7

def document
  @document
end

#metadataObject

Returns the value of attribute metadata.



7
8
9
# File 'lib/mongoid/relations/cascading/delete.rb', line 7

def 
  @metadata
end

#relationObject

Returns the value of attribute relation.



7
8
9
# File 'lib/mongoid/relations/cascading/delete.rb', line 7

def relation
  @relation
end

Instance Method Details

#cascadeObject

Execute the cascading deletion for the relation if it already exists. This should be optimized in the future potentially not to load all objects from the db.

Examples:

Perform the cascading delete.

strategy.cascade

Since:

  • 2.0.0



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/mongoid/relations/cascading/delete.rb', line 32

def cascade
  if relation
    if relation.cascades.empty?
      safety = Threaded.safety_options
      relation.clear
      Threaded.safety_options = safety
    else
      ::Array.wrap(relation).each { |doc| doc.delete }
    end
  end
end