30 votes

Colonne "Touch" updated_at dans Rails 2.3.2

J'ai un processus qui parcourt un tas de ActiveRecord modèles, fait un peu de traitement, et enregistre les modèles de nouveau. Souvent, cependant, le traitement n'entraîne pas de modifications pour les attributs et donc l' updated_at colonne ne change jamais (même si économiser est appelé).

Je préfère ne pas désactiver les mises à jour partielles (en général, ils sont utiles). Je devine que mes deux options sont les suivantes:

  1. Ajouter un distinct colonne timestamp pour le modèle (c'est à dire, 'processed_at') et de gérer moi-même, bien que cela semble un peu de gaspillage/redondante.
  2. Ou en quelque sorte remplacer la gestion de l' updated_at d'attribut?

J'ai entendu dire que les Rails 3 aura un "toucher" la méthode qui serait exactement ce que je cherche.

Toutes les idées/options/opinions?

52voto

John Topley Points 58789

En fait, la méthode touch est déjà dans Rails 2.3.x, vous pouvez donc simplement faire:

 model.touch
 

Pour mettre à jour la colonne updated_at . Alternativement, pour mettre à jour une autre colonne avec la date et l'heure actuelles, utilisez:

 model.touch(:column_name)
 

1voto

Jonathan Points 175

Maintenant que la ligne 2.3.x est venue et disparue, une réponse plus définitive est que le toucher n'est pas entré dans ActiveRecord avant la 2.3.8 . Ainsi, toute personne utilisant toujours Rails 2.3.2 (comme l'OP l'était - et comme je le suis actuellement) devra trouver un autre moyen de "toucher" leurs enregistrements.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X