Как настроить одобрение администратором изменений модели - PullRequest
6 голосов
/ 01 июля 2011

Мне нужна система, в которой обычный пользователь может редактировать модель, но на самом деле редактирование не происходит до тех пор, пока оно не будет утверждено администратором.Я нашел гем под названием paper_trail , который действительно имел версионное моделирование, но не поддерживает конкретно то, что я хочу сделать.Мне интересно, как другие люди справились с этой проблемой.Я должен добавить, что есть также ассоциации, которые я бы хотел, чтобы пользователь мог редактировать одновременно.Они не очень сложны, например, псевдонимы.

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

Ответы [ 2 ]

1 голос
/ 01 июля 2011

Один из подходов - создание версий с утверждением версии.

Каждое редактирование создает новую версию объекта модели и его ассоциаций. В любой момент времени существует только одна «текущая» версия любого объекта модели (и его представление в базе данных).

Если два пользователя отправят два отдельных изменения, это приведет к созданию двух «ожидающих» версий.

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

Есть несколько способов сделать это, и лучший из них будет зависеть от динамики ситуации.

Я бы рекомендовал посмотреть, как работает Git, и попытаться смоделировать вашу систему после этого. Это своего рода указатель на объект модели HEAD с историей ревизий и возможностью перемещения HEAD в разные ревизии. Слияние может также работать аналогично Git.

Надеюсь, это поможет.

0 голосов
/ 11 декабря 2011

Я смотрю на ту же проблему, то есть на утверждение ревизий, я могу встретить эту , я подозреваю, что вы можете сделать нечто подобное с paper_trail .

...