Audited Serialize

Gem Version

Гем для сериализации аудит-логов на базе Audited.

Установка

Добавить в Gemfile

gem 'audited-serialize'

И выполнить:

bundle

Использование

Для вызова сериализованного списка изменений вызовите метод .changes_list на экземпляре audit-класса (по умолчанию - Audited::Audit)

audit = Audited::Audit.first
audit.changes_list

=>
[
  { field: "ФИО", from: nil, to: "Test" },
  { field: "Роль", from: nil, to: "Пользователь" },
  { field: "Email", from: nil, to: "[email protected]" },
  { field: "Пароль", from: nil, to: "<новый>" }
]

Заголовки аудит-логов

На экземплярах audit-класса доступен метод .title для вывода заголовка c информацией о том, какое действие на какой сущности было совершено

audit = Audited::Audit.first
audit.title

=> "Изменение пользователя" 

Названия сущностей (пользователя из примера выше) должны быть описаны в YAML-файле с переводами. Для генерации файла со списком текущих моделей, на которых предусмотрен audit-трекинг воспользуйтесь командой:

rails g audited:translations

Заголовки связанных записей

При наличии в аудит-логах полей, содержащих ID связанных сущностей, по умолчанию будет отображено название (поле name) этой сущности. При отсутствии у сущности поля name или необходимости отображения значения другого поля можно задать название этого поля в модели

# app/models/user.rb

class User < ApplicationRecord

  audit title: :email

end

Конфигурация

Изменение настроек сериализации осуществляется путем редактирования стандартного файла конфигурации Audited

# config/initializers/audited.rb

Audited.config do |config|

end

Исключения

Для добавления исключений для полей сущностей, которые не будут отображаться в списке добавьте в конфиг serialization_exceptions.

# config/initializers/audited.rb

Audited.config do |config|

  config.serialization_exceptions = {
    'User' => ['role']
  }

end