2012-01-15 22 views
25

ejemplo tengo:¿Rails cómo sumar columnas?

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

En mi mesa Pakke tengo una columna denominada prismd

¿Cómo sumar los dos valores de las columnas para prismd @test?

+0

Definitivamente debe ordenar sus matrices. Es muy confuso lo que en realidad estás tratando de hacer y solo intentarlo hasta que aparentemente funcione no es la mejor manera de hacerlo. En su lugar, intente pensar lo que realmente desea lograr y organice su estructura de datos en consecuencia. También dividir su problema real sobre 5 o más preguntas aquí no ayudará mucho ... –

+0

Lo intentaré. Es un poco complicado quiero que estoy tratando de hacer. Solo sé que principalmente quiero que funcione porque me ha llevado mucho tiempo encontrar la solución adecuada. –

Respuesta

42

Puede resumir directamente en la base de datos mediante la creación de SQL correspondiente así:

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

Consulte ActiveRecord::Calculations para obtener más ejemplos de uso y documentación general.

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

ActiveRecord tiene un montón de una función de los métodos de cálculo, incluyendo sum:

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

FYI, ** no ** use '.sum (&: prismd)'. Esto completará el cálculo a través de Ruby. Hacer lo que @Jordan dice completará el cálculo a través de SQL y es ** mucho **, ** mucho ** más rápido. –

1

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

+4

¿Puedes explicar un poco más? –

+0

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