2011-06-03 51 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。你将不得不添加一个管理界面。