Method: Logidze::Model#diff_from

Defined in:
lib/logidze/model.rb

#diff_from(version: nil, time: nil) ⇒ Object

Return diff object representing changes since specified time.

Examples:


post.diff_from(time: 2.days.ago) # or post.diff_from(version: 2)
#=> { "id" => 1, "changes" => { "title" => { "old" => "Hello!", "new" => "World" } } }


170
171
172
173
174
175
176
177
178
179
# File 'lib/logidze/model.rb', line 170

def diff_from(version: nil, time: nil)
  time = parse_time(time) if time
  changes = log_data&.diff_from(time: time, version: version)&.tap do |v|
    deserialize_changes!(v)
  end || {}

  changes.delete_if { |k, _v| deleted_column?(k) }

  {"id" => id, "changes" => changes}
end