Audited Serialize
Гем для сериализации аудит-логов на базе 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
Для поиска моделей с недостающими переводами и более неактуальных переводов выполните:
rake audited:sync_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