2011-03-08 13 views
6

Estoy creando un modelo de inscripción en el curso y cada vez que un usuario vea el curso, quiero actualizar la base de datos con la marca de tiempo actual. ¿Debo actualizar el campo updated_at existente o crear un campo separado para el modelo?Rails 3 Modificación updated_at

Respuesta

5

Crearía un campo separado. updated_at realmente no comunica correctamente su propósito. Algo como last_viewed_at sería más apropiado. Por supuesto, updated_at se actualizará cuando actualice last_viewed_at, por lo que debe encontrar una forma de anularlo cuando lo único que desea hacer es actualizar esa columna.

Puede desactivar temporalmente la actualización de la marca de tiempo configurando self.record_timestamps en falso en un before_filter y luego volver a habilitarlo en un after_filter.

+0

Creo que hay una manera mejor, pero puede alternar un 'CourseEnrollment.record_timestamps = false' antes de actualizar el registro. – Jordan

+1

Iría con la columna adicional, también. Para no modificar la marca de tiempo actualizada, agregue un método de modelo adicional, tal vez llamado "visto!", Y ponga allí una llamada: "atributo_actualización: last_viewed_at, Time.now". Esto solo actualizará este campo. En sus controladores que muestran el registro, simplemente llame a "record.viewed!" entonces. – hurikhan77

0

Si entiendo correctamente, desea crear una columna en CourseEnrollment llamada last_viewed_at que se establece cada vez que un usuario visualiza un recodificado?

Si desea hacer eso, cree una migración para agregar la columna last_viewed_at a su inscripción en el curso (no sobrescriba el campo carriles updated_at). Luego, ya sea en la lógica de su controlador o en el nivel del modelo, puede actualizar ese campo. Depende de cómo quiera que se implemente.