02-08-2010, 07:57 PM
(02-08-2010, 01:26 PM)Argorate a écrit : J'avoue que perso je travail qu'avec des timestamp tu te prends moins la tete ^^
Tu te prends encore moins la tête avec des objets.
# Fais exploser la bombe dans 20 minutes :
bomb.explode_at = Time.now + 20.minutes
bomb.explode_at = 20.minutes.from_now # Equivalent et encore plus simple.
Un exemple réel issu de Spherium : la méthode qui met à jour les ressources du joueur. La colonne resources_updated_at contient l'instant de la dernière mise à jour et hourly_energy_production est une méthode qui compte la production horaire d'énergie :
def update_resources!
User.transaction do
now = Time.now.utc
duration_since_previous_update = now - resources_updated_at
energy_produced_per_second = energy_produced_per_hour / 3600
self.energy_count += energy_produced_per_second * duration_since_previous_update
self.resources_updated_at = now
save!
end
end
C'est autrement plus lisible et pratique que de travailler avec des nombres, non (c'est rhétorique, hein…) ?
Pour conclure, je te conseille de prendre un moment pour développer ou trouver des classes qui font ça, ton code sera bien plus lisible et maintenable.
Sephi-Chan