module LogBook::Utils

Public Class Methods

pretty_changes(model) click to toggle source
# File lib/log_book/utils.rb, line 2
def self.pretty_changes(model)
  # TODO: this line of code is duplicated
  if ActiveRecord::VERSION::STRING.to_f >= 5.1
    clean_changes = model.saved_changes.select { |k,v| !model.log_book_options[:ignore].include? k.to_sym }
  else
    clean_changes = model.changes.select { |k,v| !model.log_book_options[:ignore].include? k.to_sym }
  end

  result =
    clean_changes.map do |k,v|
      old_value = v[0]
      new_value = v[1]

      old_value = old_value.utc.strftime("%Y-%m-%d %H:%M:%S") if old_value.is_a? Time
      new_value = new_value.utc.strftime("%Y-%m-%d %H:%M:%S") if new_value.is_a? Time

      {
        "key" => k,
        "before" => old_value,
        "after" => new_value
      }
    end

  result
end