6

I need a system where a regular user can edit a model but the edits don't actually happen until they are approved by an administrator. I found a gem called paper_trail that does had model versioning but doesn't support specifically what I want to do. I'm wondering how other people have handled this problem. I should add that there are also associations that I would like to be able for the user to edit at the same time. They aren't very complicated, for example one is aliases.

The more complicated part maybe be the case where multiple users edit the same model and trying to do some sort of merge.

4

2 に答える 2

1

1 つのアプローチは、バージョン承認を使用してバージョン管理を行うことです。

編集するたびに、モデル オブジェクトとその関連付けの新しいバージョンが作成されます。モデル オブジェクトの「現在の」バージョンは常に 1 つだけです (データベースでの表現)。

2 人のユーザーが 2 つの別々の編集を送信すると、2 つの「保留中」バージョンが作成されます。

管理者は、現在のバージョンを新しい「保留中」バージョンに移動することで編集を承認します。マージも同様に実行できますが、それは非常にドメイン固有であり、競合が発生する可能性があるため、別のバージョンを保持することはとにかく賢明です.

これを達成する方法はいくつかありますが、最良の方法は状況のダイナミクスによって異なります。

Git がどのように機能するかを調べてから、システムをモデル化することをお勧めします。リビジョン履歴と HEAD を別のリビジョンに移動する機能を備えた HEAD モデル オブジェクトへのある種のポインタ。マージも Git と同様に機能します。

それが役立つことを願っています。

于 2011-06-30T23:11:28.240 に答える
0

私はこれと同じ問題、つまりリビジョンの承認を見ています。これに出くわすことができます。 paper_trailで同様のことができると思います。

于 2011-12-11T12:45:13.040 に答える