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
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
.
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.
Mira la AR touch
método http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-touch
Ver http://stackoverflow.com/questions/1091311/touch-updated-at-column-in-rails-2-3-2 para más detalles –
- 1. columna "Toque" updated_at en Rails 2.3.2
- 2. Desactivar la columna "updated_at" en Rails
- 3. Rails 3 Problema de serialización
- 4. Cambio updated_at en un registro de rieles
- 5. Rails 3 link_to rutas (editar) recursos anidados
- 6. Rails 3. Obtenga la actualización más reciente
- 7. Rails 3: HTTP_USER_AGENT
- 8. Rails 3 y validate_on_create
- 9. Rails 3 vs Sinatra
- 10. Rails 3 Codificación :: CompatibilityError
- 11. Rails 3: rutas subdominio
- 12. Rails 3 - Validación personalizada
- 13. Timezone with rails 3
- 14. Rails 3 autocarga
- 15. Rails 3 new_record? obsoleto
- 16. Releasedate for Rails 3
- 17. Rails 3 DISTINCT QUERY
- 18. cache_money for Rails 3
- 19. Rails 3 serializar
- 20. Rails 3 has_many changed?
- 21. Rails 3 Sandbox consola
- 22. Rails 3 Mysql Problems
- 23. bash_completion para Rails 3
- 24. Rails 3 y FCGI?
- 25. Rails 3: f.select - options_for_select
- 26. Rails 3 SSL Deprecation
- 27. Rails 3 en dreamhost?
- 28. Rails 3 Recomendación CMS
- 29. Rails 3 Timezone error
- 30. Rails 3 find_or_create_by
Creo que hay una manera mejor, pero puede alternar un 'CourseEnrollment.record_timestamps = false' antes de actualizar el registro. – Jordan
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