2011-06-03 22 views
6

Tengo un modelo que los miembros podrán actualizar, pero sus cambios no tendrán efecto hasta que un administrador apruebe sus cambios. ¿Alguien ha resuelto este mismo problema y qué gemas recomendarías para versionar? ¿Rastro de papel? Versiones Vestal?Versiones de modelo de rieles con aprobación

Respuesta

7

Quizás podría usar vestal_versions con un ligero giro. Agregue una acción after_update en su controlador que retroceda a la versión anterior si el usuario que realizó el cambio no es un administrador. Luego puede establecer el estado de la instancia en pendiente, lo que alertaría a un administrador para su revisión. El administrador simplemente revisará la última versión y la moverá si es aprobada.

# 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

El enlace correcto es https://github.com/laserlemon/vestal_versions pero esta joya no se mantiene – dpaluy

1

No es una joya Draftsman. Le permite crear versiones preliminares de sus registros de base de datos. Leer más here. Deberá agregar una interfaz de administrador.

Cuestiones relacionadas