2011-06-03 55 views
6

我有一個模型,成員將能夠更新,但他們的更改將不會生效,直到管理員批准其更改。有沒有人解決了這個相同的問題,你會推薦什麼寶石版本? PaperTrail? Vestal版本?Rails模型版本與審批

回答

7

也許你可以使用vestal_versions略有扭曲。如果進行更改的用戶不是管理員,則在控制器中添加after_update操作,該操作將回滾到以前的版本。然後,您可以將實例的狀態設置爲掛起狀態,這會提醒管理員進行審閱。然後,管理員只需查看最新版本,並在獲得批准後將其升級。

# model_controller.rb 
after_update :rollback_if_not_admin 

def rollback_if_not_admin 
    unless current_user.admin? 
    #roll back changes 
    version = @model_instance.versions.count 
    if version > 1 
    @model_instance.reset_to!(version - 1) 
    @model_instance.status = "pending" 
    end 

    flash[:notice] = "Your changes will be reflected once an admin has reviewed them" 
    redirect_to @model_instance 
end 
+0

正確的鏈接是https://github.com/laserlemon/vestal_versions,但這個寶石沒有維護 – dpaluy 2015-08-24 12:05:40

1

有一個Draftsman寶石。它允許您創建數據庫記錄的草稿版本。閱讀更多here。你將不得不添加一個管理界面。