Каков наилучший способ сохранить историю редактирования записи с помощью Rails и ActiveRecord? - PullRequest
4 голосов
/ 28 января 2009

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

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

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

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

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

Ответы [ 3 ]

10 голосов
/ 28 января 2009

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

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

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

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

5 голосов
/ 04 мая 2012

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

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

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

3 голосов
/ 28 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...