2012-01-15 1 views
25

esempio ho:Rails come sommare le colonne?

@test = Pakke.find([[4], [5]]) 

Nel mio tavolo Pakke ho una colonna denominata prismd

Come posso riassumere i due valori per le prismd colonne per @test?

+0

È necessario portare un po 'di ordine nei propri array. È molto confuso ciò che stai effettivamente cercando di fare e solo provare fino a quando apparentemente funziona non è il modo migliore per farlo. Cerca invece di pensare a ciò che vuoi veramente ottenere e ad organizzare di conseguenza la struttura dei tuoi dati. Anche sdrammatizzare il tuo problema reale su 5 o più domande qui non aiuterà molto .... –

+0

Ci proverò. È un po 'complicato voglio che sto cercando di fare. So solo che lo voglio principalmente perché ha impiegato molto tempo a trovare la soluzione giusta. –

risposta

42

Si può riassumere direttamente sul database creando rispettivo SQL come questo:

Pakke.sum(:prismd, :conditions => {:id => [4,5]}) 

Vedi ActiveRecord::Calculations per ulteriori esempi di utilizzo e documentazione generale.

1
Pakke.find([[14], [15]]).map(&:prismd).sum 
23

ActiveRecord ha un sacco di built-in metodi di calcolo, tra cui sum:

@test = Pakke.where(:id => [4, 5]).sum(:prismd) 
+3

FYI, ** non ** usare '.sum (&: prismd)'. Questo completerà il calcolo tramite Ruby. Fare ciò che dice @Jordan completerà il calcolo tramite SQL ed è ** molto **, ** molto ** più veloce. –

1

test = Order.where (potential_student_id: potential_student.id) .sum ("total_price");

+4

Puoi spiegare un po 'di più? –

+0

Pakke.where (id: [4,5]). Sum ("prismd") – KevinLi