2012-01-15 29 views
25

Örnek I var:Sütunların nasıl alınacağını gösterir?

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

benim pakke tabloda ben adlı bir sütun var prismd

nasıl @test için prismd sütunlar için iki değerleri toplamak mı?

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

: Böyle İlgili SQL oluşturarak veritabanı üzerinde doğrudan özetleyebiliriz

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

Dizilerinize kesinlikle bir sipariş vermelisiniz. Gerçekte yapmaya çalıştığınız şeyleri karıştırmak ve işe yaramaz hale gelene kadar denemek, bunu yapmanın en iyi yolu değildir. Bunun yerine, veri yapınızı gerçek anlamda gerçekleştirmek istediğinizi düşünmeye çalışın. Ayrıca 5 veya daha fazla soru üzerinde gerçek probleminizi ayrıştırarak çok fazla yardım etmeyeceksiniz .... –

+0

Denerim. Yapmak istediğim biraz karmaşık bir istektir. Sadece biliyorum ki esas olarak çalışmak istiyorum çünkü doğru çözümü bulmak için çok zaman harcadı. –

cevap

42

:

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

ActiveRecord yerleşik hesaplama yöntemleri, sum dahil bir grup var Daha fazla kullanım örneği ve genel belgeler için bkz. ActiveRecord::Calculations.

+3

FYI, ** ** .sum (&: prismd) 'işlevini kullanamaz. Bu, hesaplamayı Ruby ile tamamlayacaktır. @Jordan'ın dediği şeyi yapmak SQL üzerinden hesaplamayı tamamlayacak ve ** çok **, ** çok ** daha hızlı. –

1

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

+4

Biraz daha açıklayabilir misiniz? –

+0

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

İlgili konular