6

Bueno, he visto algunos plugins para crear una tabla de versiones para realizar un seguimiento de las modificaciones en los modelos específicos, pero no puede hacer fácilmente como quora muestra¿Cómo funciona el control de revisiones en quora? Diseño de bases de

Changing a topic photo on quora

Lo que tengo hasta ahora es una mesa así:

  • Identificación del
  • item_type: especifies qué revisión modelo se refiere: "Tema"
  • item_id
  • caso: si era: "corregido, añadido, cambiado de nuevo, eliminado"
  • que: ¿quién ha activado el evento
  • columna: ¿Qué columna en "Tema" el valor ha cambiado. "Tema PHOTO_URL."
  • nueva: nuevo valor: "http://s3.amazonaws.../pic.png"
  • edad valor antiguo: "" http://s3.amazonaws.../oldpic.png "
  • revision_rel: apunta a la última revisión
  • marca de tiempo

enter image description here

¿Alguien podría darme alguna ayuda y pautas con este diseño? Im preocupado por el rendimiento, columnas equivocadas, las columnas que faltan, etc

id | item_type | item_id | event | who | column | new  | old  | revision_rel | date 
________________________________________________________________________________________________________ 
1 | Topic | 2 | edit | Luccas | photo | pic.png | oldpic.png | null  | m:d:y 
2 | Topic | 2 | revert | Chris | photo | oldpic.png | pic.png |  1  | m:d:y 
+0

Es probable que no necesita esto más ... pero es posible que no necesite almacenar el valor antiguo y el nuevo si registra todos los eventos (crear, editar, destruir). El valor anterior de la versión 2 es el nuevo valor de la versión 1. Depende de su uso. –

Respuesta

1

Hay disponibles algunas joyas que ya hacen lo que usted está buscando. ¿Has mirado en:

Tómese miradas en gemas existentes: https://www.ruby-toolbox.com/categories/Active_Record_Versioning

estoy usando auditado (anteriormente acts_as_audited) por algo muy similar: https://github.com/collectiveidea/audited

+0

Voy a editar mi pregunta más tarde para decir que este plugins no hace lo que necesito. Quiero versiones por columna, y no toda la fila. Describiré esto mejor más adelante y cómo estoy implementando. Pero gracias por la respuesta. – Luccas

Cuestiones relacionadas