class PaperTrail::RelatedChanges::Serializer::BuildDiffs

Attributes

attr[R]
change[R]
diff[R]
record[R]
request_type[R]

Public Class Methods

new(attr, diff, record, request_type, change) click to toggle source
# File lib/paper_trail/related_changes/serializer.rb, line 72
def initialize(attr, diff, record, request_type, change)
  @attr         = attr.to_sym
  @diff         = diff
  @record       = record
  @request_type = request_type
  @change       = change
end

Public Instance Methods

call() click to toggle source
# File lib/paper_trail/related_changes/serializer.rb, line 80
def call
  return call_serializer if custom_serializer

  change.diffs << default_diff
end

Private Instance Methods

attribute() click to toggle source
# File lib/paper_trail/related_changes/serializer.rb, line 98
def attribute
  @attribute ||= Attribute.new(
    name:         attr,
    diff:         diff,
    version:      record,
    request_type: request_type
  )
end
call_serializer() click to toggle source
# File lib/paper_trail/related_changes/serializer.rb, line 111
def call_serializer
  custom_serializer.serialize(attribute, change)
end
custom_serializer() click to toggle source
# File lib/paper_trail/related_changes/serializer.rb, line 107
def custom_serializer
  RelatedChanges.serializers.detect { |serializer| serializer.match(attribute) }
end
default_diff() click to toggle source
# File lib/paper_trail/related_changes/serializer.rb, line 94
def default_diff
  Diff.new(attribute: attr, old: diff[0], new: diff[1], rank: 0, meta: record, source: :default)
end