lib/ecoportal/api/common/base_model.rb in ecoportal-api-0.5.8 vs lib/ecoportal/api/common/base_model.rb in ecoportal-api-0.6.0

- old
+ new

@@ -46,10 +46,11 @@ @_parent = parent @_key = key if !_parent || !_key @doc = doc @original_doc = JSON.parse(@doc.to_json) + @initial_doc = JSON.parse(@doc.to_json) end end def doc raise UnlinkedModel.new unless linked? @@ -61,21 +62,28 @@ raise UnlinkedModel.new unless linked? return @original_doc if is_root? _parent.original_doc.dig(*[_key].flatten) end + def initial_doc + raise UnlinkedModel.new unless linked? + return @initial_doc if is_root? + _parent.initial_doc.dig(*[_key].flatten) + end + def as_json doc end def to_json(*args) doc.to_json(*args) end - def as_update + def as_update(ref = :last) new_doc = as_json - Common::HashDiff.diff(new_doc, original_doc) + ref_doc = ref == :total ? initial_doc : original_doc + Common::HashDiff.diff(new_doc, ref_doc) end def dirty? as_update != {} end @@ -98,10 +106,10 @@ else dig_set(_parent.doc, [_key].flatten, new_doc) end end - def print + def pretty_print puts JSON.pretty_generate(as_json) self end protected