2012-01-15 2 views
25

Пример у меня есть:Рельсы, как суммировать столбцы?

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

В моей Pakke таблице у меня есть столбец с именем prismd

Как суммировать два значения для prismd столбцов для @test?

+0

Вы должны обязательно внести некоторый заказ в свои массивы. Это очень запутывает то, что вы на самом деле пытаетесь сделать, и просто пытаетесь, пока оно, похоже, не работает, - это не лучший способ сделать это. Вместо этого попробуйте подумать о том, чего вы действительно хотите достичь, и упорядочить свою структуру данных соответственно. Кроме того, разделение вашей реальной проблемы на 5 или более вопросов здесь не поможет ... –

+0

Я попробую. Это немного сложная задача, которую я пытаюсь сделать. Просто знаю, что я в основном хочу, чтобы он работал, потому что он нашел много времени, чтобы найти правильное решение. –

ответ

42

Вы можете резюмировать непосредственно в базе данных путем создания соответствующего SQL так:

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

См. ActiveRecord::Calculations для получения дополнительных примеров использования и общей документации.

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

ActiveRecord имеет кучу встроенных методов расчета, в том числе sum:

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

FYI, ** не ** использовать '.sum (&: prismd)'. Это завершит расчет через Ruby. Выполнение того, что говорит @Jordan, завершит вычисление с помощью SQL и будет ** намного **, ** намного ** быстрее. –

1

test = Order.where (потенциал_student_id: потенциал_student.id) .sum ("total_price");

+4

Можете ли вы объяснить немного больше? –

+0

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

Смежные вопросы