def diff(other_audit)
      other_modifications = other_audit ? other_audit.modifications : {}

      {}.tap do |d|
        # find keys present only in this audit
        (self.modifications.keys - other_modifications.keys).each do |k|
          d[k] = [nil, self.modifications[k]] if self.modifications[k]
        end

        # find keys present only in other audit
        (other_modifications.keys - self.modifications.keys).each do |k|
          d[k] = [other_modifications[k], nil] if other_modifications[k]
        end

        # find common keys and diff values
        self.modifications.keys.each do |k|
          if self.modifications[k] != other_modifications[k]
            d[k] = [other_modifications[k], self.modifications[k]]
          end
        end
      end
    end
def diff(other_audit)
      other_modifications = other_audit ? other_audit.modifications : {}

      {}.tap do |d|
        # find keys present only in this audit
        (self.modifications.keys - other_modifications.keys).each do |k|
          d[k] = [nil, self.modifications[k]] if self.modifications[k]
        end

        # find keys present only in other audit
        (other_modifications.keys - self.modifications.keys).each do |k|
          d[k] = [other_modifications[k], nil] if other_modifications[k]
        end

        # find common keys and diff values
        self.modifications.keys.each do |k|
          if self.modifications[k] != other_modifications[k]
            d[k] = [other_modifications[k], self.modifications[k]]
          end
        end
      end
    end
Diffing two audits' modifications

 Returns a hash containing arrays of the form
   {
     :key_1 => [<value_in_other_audit>, <value_in_this_audit>],
     :key_2 => [<value_in_other_audit>, <value_in_this_audit>],
     :other_audit_own_key => [<value_in_other_audit>, nil],
     :this_audio_own_key  => [nil, <value_in_this_audit>]
   }