2012-01-15 40 views
25

Ví dụ tôi có:Đường ray cách tổng hợp các cột?

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

Trong bảng Pakke của tôi, tôi có một cột tên là prismd

Làm thế nào để tổng hợp hai giá trị cho các prismd cột cho @test?

+0

Bạn chắc chắn nên mang một số thứ tự vào mảng của mình. Nó rất khó hiểu những gì bạn đang thực sự cố gắng làm và chỉ cố gắng cho đến khi nó dường như hoạt động không phải là cách tốt nhất để làm điều đó. Thay vào đó, hãy thử suy nghĩ những gì bạn thực sự muốn đạt được và tổ chức cấu trúc dữ liệu của bạn cho phù hợp. Ngoài ra chia nhỏ vấn đề thực tế của bạn trên 5 câu hỏi trở lên ở đây sẽ không giúp được nhiều ... –

+0

Tôi sẽ cố gắng. Đó là một chút phức tạp muốn tôi đang cố gắng để làm. Chỉ cần biết tôi chủ yếu muốn nó làm việc bởi vì nó đã mất rất nhiều thời gian tìm ra giải pháp đúng. –

Trả lời

42

Bạn có thể tóm tắt trực tiếp trên cơ sở dữ liệu bằng cách tạo ra các SQL tương ứng như thế này:

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

Xem ActiveRecord::Calculations để biết thêm các ví dụ sử dụng và tài liệu chung.

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

ActiveRecord có một loạt các built-in phương pháp tính toán, bao gồm sum:

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

FYI, ** không ** sử dụng '.sum (&: prismd)'. Điều này sẽ hoàn thành việc tính toán thông qua Ruby. Làm những gì @Jordan nói sẽ hoàn thành việc tính toán qua SQL và ** nhiều **, ** nhiều ** nhanh hơn. –

1

kiểm tra = Order.where (potential_student_id: potential_student.id) .sum ("total_price");

+4

Bạn có thể giải thích thêm một chút không? –

+0

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

Các vấn đề liên quan