2012-01-15 12 views
25

przykład mam:Szyny, jak sumować kolumny?

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

W moim stole Pakke mam kolumnę o nazwie prismd

Jak mogę podsumować dwie wartości dla prismd kolumn dla @test?

+0

Powinieneś z pewnością wprowadzić porządek w swoich tablicach. To bardzo mylące, co faktycznie próbujesz zrobić i po prostu próbować, dopóki nie wydaje się, że działa, nie jest najlepszym sposobem, aby to zrobić. Zamiast tego zastanów się, co tak naprawdę chcesz osiągnąć i odpowiednio uporządkuj strukturę danych. Również podzielenie twojego aktualnego problemu na 5 lub więcej pytań tutaj nie pomoże ... –

+0

Spróbuję. To trochę skomplikowane, co chcę zrobić. Po prostu wiem, że głównie chcę, aby to działało, ponieważ zajęło dużo czasu znalezienie odpowiedniego rozwiązania. –

Odpowiedz

42

można podsumować bezpośrednio w bazie danych poprzez stworzenie odpowiedniego SQL takiego:

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

Więcej przykładów użycia i ogólnej dokumentacji znajduje się w dokumencie ActiveRecord::Calculations.

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

ActiveRecord ma kilka wbudowanych metod obliczeniowych, w tym sum:

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

FYI, ** nie używaj ** .sum (&: prismd). To zakończy obliczenia przez Ruby. Wykonywanie tego, co mówi @Jordan, zakończy obliczenia za pomocą SQL i jest ** dużo **, ** znacznie ** szybsze. –

1

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

+4

Czy możesz wyjaśnić trochę więcej? –

+0

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

Powiązane problemy