2011-06-30 41 views
5

我需要一個系統,一個普通用戶可以編輯模型,但編輯實際上並沒有發生,直到他們被管理員批准。我發現了一個名爲paper_trail的寶石,它具有模型版本控制功能,但並不特別支持我想要做的事情。我想知道其他人是如何處理這個問題的。我應該補充一點,還有一些我希望能夠讓用戶同時編輯的關聯。它們不是很複雜,例如一個是別名。如何設置管理員批准模型的編輯

更復雜的部分可能是多個用戶編輯同一模型並嘗試進行某種合併的情況。

+1

有沒有找到解決辦法? – ZMorek

回答

1

一種方法是使用版本批准進行版本控制。

每個編輯都會創建模型對象及其關聯的新版本。在任何時候,任何模型對象只有一個「當前」版本(並且它在數據庫中表示)。

如果兩個用戶提交兩個單獨的編輯,這將創建兩個「待定」版本。

管理員將通過將當前版本移動到新的「掛起」版本來批准編輯。合併也可以完成,但這可能是特定領域的,並可能導致衝突,因此保留單獨的版本無論如何都會很聰明。

有幾種方法可以做到這一點,最好的方式取決於情況的動態。

我建議看看Git是如何工作的,並試圖在此之後爲系統建模。某種類型的指向您的HEAD模型對象的指針,具有修訂歷史記錄以及將HEAD移動到不同修訂版本的功能。合併也可以像Git一樣工作。

希望有所幫助。

+0

我不認爲創建其他版本的模型是一種好的方式,因爲你將會用其他版本來污染數據庫。我實際上認爲必須有一種方法來修改paper_trail來執行此操作。就像創建一個新版本但不更新當前對象一樣。 – hadees

+0

好吧,你可以使用cron或批准來清理舊版本,但它本質上是同一個問題。你創建新的版本,然後刪除你不再關心的版本。 –

0

我在看同樣的問題,即批准的修訂,我可以碰到this,我會懷疑你可以做類似的事情paper_trail

相關問題