2010-07-23 4 views
1

J'ai actuellement un modèle appelé Job qui a un attribut appelé CPU. Cela correspond à l'heure de l'UC qu'un travail était en cours d'exécution. Je voudrais ajouter tous les attributs de temps de tous les travaux pour une date spécifique. Cette colonne est au format 00:00:00. Par conséquent, j'ai pensé que cela fonctionnerait:Ajout d'heures en ruby ​​sur les rails

def self.cpu_time 
    sum(:cpu) 
end 

Qui renvoie le suivant "Sat Jan 01 00:00:00 UTC 2000".

Pour mes données de test, j'ai utilisé les temps cpu suivants: 00:00:46 00:26:46

Toute aide serait appréciée

Cela a résolu mon problème, même si il ne semble pas être les rails ainsi:

def self.cput 
    @times = find(:all, 
       :select => 'cput') 
    @total_time =0 
    for time in @times do 
     @total_time += time.cput.to_i - 946684800 
     end 
    @total_time 

    end 

Répondre

0

vous ne précisez pas quel type de données que vous utilisez pour la colonne cpu. Personnellement, je le stockerais en quelques secondes et ensuite convertir en heures, minutes et secondes après l'avoir additionné.

+0

La colonne CPU est stockée dans le format Heure 00:00:00 – jalagrange

+0

Comment proposez-vous que je stocke l'heure en secondes? Je suis en train d'analyser un fichier XML dans lequel le nœud de temps CPU est également au format 00:00:00. Comment puis-je changer de format en secondes? – jalagrange

+3

Un objet Temps représente une heure spécifique et non une durée. Si vous souhaitez stocker une durée, stockez le nombre de secondes. Vous pouvez convertir la chaîne "00:00:00" en secondes avec 'h, m, s =" 01:12:34 ".split (':'); h.to_i * 3600 + m.to_i * 60 + s' – mckeed