Module: Ecoportal::API::Common::Content::DoubleModel::DoubleDoc::ReplaceableDoc

Extended by:
Includer
Includes:
VarTracking
Defined in:
lib/ecoportal/api/common/content/double_model/double_doc/replaceable_doc.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Includer

include_missing

Class Method Details

.included(base) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/ecoportal/api/common/content/double_model/double_doc/replaceable_doc.rb', line 13

def included(base)
  super

  include_missing(base, DoubleModel::HashHelpers)
  include_missing(base, DoubleDoc::Base)
  include_missing(base, DoubleDoc::RootedKey)
  include_missing(base, DoubleDoc::LinkableDoc)
end

Instance Method Details

#replace_doc(new_doc) ⇒ Object

INSTANCE METHODS



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ecoportal/api/common/content/double_model/double_doc/replaceable_doc.rb', line 25

def replace_doc(new_doc)
  return (@doc = new_doc) if root?

  unless linked?
    raise UnlinkedModel.new(
      from: "#{self.class}##{__method__}",
      key:  _parent_key
    )
  end

  dig_set!(
    _parent.doc,
    resolved_rooted_doc_key,
    new_doc
  )

  _parent.variable_remove!(_parent_key) unless new_doc
  #variables_remove!
end