Ответ 1
Это работает для меня:
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
Я попробовал sum(:cost, :quantity)
, но #sum
не ожидает, что аргументы будут определены таким образом. Я также пробовал sum(:cost => :total_cost, :quantity => :total_quantity)
, безрезультатно.