Rails Model Versioning with Approval

后端 未结 2 1177
眼角桃花
眼角桃花 2020-12-23 23:54

I have a model that members will be able to update but their changes wont take effect until an admin approves their changes. Has anyone solved this same problem and what ge

相关标签:
2条回答
  • 2020-12-24 00:17

    Perhaps you could use vestal_versions with a slight twist. Add an after_update action in your controller which rolls back to the previous version if the user who made the change is not an admin. Then you can set the instance's status to pending, which would alert an admin for review. The admin would then just review the latest version and move it up if approved.

    # 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 讨论(0)
  • 2020-12-24 00:23

    There is a Draftsman gem. It lets you create draft versions of your database records. Read more here. You will have to add an admin interface.

    0 讨论(0)
提交回复
热议问题