Ruby on Rails: как отслеживать изменения, как StackOverflow реализует свою историю изменений?

Если бы я реализовал систему, идентичную истории изменений вопросов StackOverflow, используя Ruby on Rails, что мне нужно было бы сделать, чтобы добиться этого? Я создаю сайт, который действует как вики, где пользовательский контент может обновляться другими людьми. Мне нужно иметь возможность отслеживать историю этих изменений, но я не знаком с тем, как это реализовать.

Решение:

В двух словах, это работает так: создается дополнительная таблица для отслеживания изменений. Каждая строка в таблице имеет моментальный снимок данных, существовавших до изменения записи (или только данных, которые были изменены).

Есть ряд Ruby Gems, которые уже сделали большую часть работы. Вот список жемчужин, связанных с историей версий/редакций. Похоже, Paper Trail в настоящее время является самым популярным геммом для этого. Райан Бейтс записал RailsCast с обзором использования Paper Trail.


person Andrew    schedule 30.09.2010    source источник
comment
Вы нашли какое-либо правильное решение для этого? Я также хочу разработать функциональность, которая действует как вики в рельсах. Который показывает правильную ревизию.   -  person krunal shah    schedule 20.04.2011
comment
@krunal shah Я только подхожу к этому. Ознакомьтесь с этим RailsCast о Paper Trail   -  person Andrew    schedule 01.06.2011


Ответы (2)


Когда запись редактируется, вы не удаляете (старую) запись, вы просто добавляете новую запись с новым номером версии. Если вы хотите получить запись для отображения, вы выбираете запись с самым высоким номером версии. Если вы хотите получить запись, чтобы показать ее историю изменений, вы выбираете их все и сортируете по номеру версии.

person dty    schedule 30.09.2010

Я знаю, что это старо, но любой, кто столкнется с этим, должен проверить Paper Trail

person Favourite Onwuemene    schedule 22.11.2015