Aynı anda diğer alanları seçerken tek bir gruba çoklu toplamları() bağlamak istiyorum. ActiveRecord yöntemlerini, daha sonra devralınan ActiveRecord sınıflarının davranışını değiştirebileceğinden, el ile bir sql dizesi oluşturmak yerine bunu yapmak için kullanmayı tercih ederim.Raylarda ActiveRecord'da birden fazla toplam() s
LineItem.select(:user_id).group(:user_id).sum(:cost).sum(:quantity)
sebebi ek grup buralara ekleyebilir olma ve Halbuki:
Mesela ben böyle bir şeyle (örnek olarak) deyimi temsil etmek
select user_id, sum(cost) as total_cost, sum(quantity) as total_quantity from line_items group by user_id
istiyorum Tüm tutarların ortak olacağı daha sonraki cümleleri.
require "active_record"
require "logger"
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.establish_connection :adapter => "postgresql", :database => "francois"
ActiveRecord::Base.connection.execute "DROP TABLE IF EXISTS values"
ActiveRecord::Base.connection.execute "CREATE TABLE values(user_id INTEGER NOT NULL, quantity INTEGER NOT NULL DEFAULT 1, cost INTEGER NOT NULL DEFAULT 2)"
class Value < ActiveRecord::Base
end
2.times do
5.times do |n|
Value.create!(:user_id => n)
end
end
Value.group(:user_id).select('user_id, SUM(cost) AS total_cost, SUM(quantity) AS total_quantity').each do |value|
p [value.user_id, value.total_quantity, value.total_cost]
end
Ben
sum(:cost, :quantity)
çalıştı, ancak
#sum
bu şekilde tanımlanan parametrelerle beklemediğini: