Как лучше всего поддерживать историю редактирования записи с помощью Rails и ActiveRecord

Каков наилучший / самый чистый / самый простой способ сохранить историю редактирования записей в Rails?

Я ищу логирование - кто и когда вносил правки, а также возможность отката к более ранним версиям записей.

Я предполагаю, что вы будете использовать обратные вызовы ActiveRecord для обновлений или удалений, и вместо обновления / удаления записей вы должны создать новую и иметь какой-то идентификатор для сохранения той же «записи», возможно, поле для различения, какая запись является текущей. , и поле версии.

Я смутно припоминаю, что видел некоторые плагины, но сейчас не могу их найти.

(Есть ли для этого термин, которого я не знаю?)


person srboisvert    schedule 28.01.2009    source источник


Ответы (3)


act_as_audited безоговорочно побеждает. Вы даже можете использовать с ним actions_as_versioned. Все объясняется на странице плагинов. Просмотрите комментарии к обсуждению под публикацией на странице. Разработчики опубликовали проблемы и получили положительные отзывы от автора и других пользователей.

Я использовал этот плагин во многих приложениях и считаю его очень полезным. Настоятельно рекомендуется.

Вот превью со страницы плагина:

act_as_audited - это плагин Active Record, который регистрирует все модификации ваших моделей в таблице аудита. Он использует полиморфную ассоциацию для хранения записи аудита для любого из объектов модели, которые вы хотите подвергнуть аудиту. Журнал аудита хранит модель, в которой произошло изменение, «действие» (создание, обновление, уничтожение), сериализованный хэш изменений и, необязательно, пользователя, выполнившего действие.

person Chirantan    schedule 28.01.2009
comment
о да. Аудит. Я знал, что есть слово. Я просто не мог этого вспомнить. Спасибо. - person srboisvert; 28.01.2009
comment
:) Добро пожаловать. Плагин отличный. Очень прост в использовании и выполняет именно те функции, которые должен иметь аудит. Пригодится при создании отчетов. - person Chirantan; 28.01.2009

Ответы здесь хорошие, но нужны обновления.

Act_as_audited переименован в audited, см. https://github.com/collectiveidea/audited. Я использовал его с большим успехом.

Также может представлять интерес paper_trail. http://railscasts.com/episodes/255-undo-with-paper-trail восстановление версий немного неудобно и недокументировано в audited / plays_as_audited. В paper_trail есть более ясные примеры для этого аспекта.

person whitehat101    schedule 04.05.2012
comment
@srboisvert Пожалуйста, снимите пометку с моего ответа и отметьте этот как ответ. - person Chirantan; 21.12.2016

Act_as_versioned должен делать то, что вы ищете - http://wiki.rubyonrails.org/rails/pages/ActsAsVersioned

person Chris    schedule 28.01.2009