我正在尝试生成客户资料页面。该页面包括客户订单历史记录、最新订单及其历史合计。我已经在Customer.where_completed上运行了sum、count和average,但这涉及到那个数据库三次。我觉得一定有更好的办法?
@customers_total_spent = @customer.orders.where_completed.sum(:sale)
@customers_average_per_order = @customer.orders.where_completed.average(:sale)
@customers_total_orders = @customer.orders.where_completed.count(:sale)客户
class Customer < ActiveRecord::Base
    has_many :orders
end订单
class Order < ActiveRecord::Base
    belongs_to :customer
    scope :completed,-> { where.not(completed_at: nil) }
end发布于 2015-09-23 19:25:44
你应该试试这个
orders_completed = @customer.orders.where_completed.pluck("sum(sale), avg(sale), count(sale)").flatten
@customers_total_spent = orders_completed[0]
@customers_average_per_order = orders_completed[1]
@customers_total_orders = orders_completed[2]发布于 2015-09-23 19:38:56
@qry = @customer.orders.where_completed.select("sum(sale) as sum, avg(sale) as avg, count(sale) as count").first
@customers_total_spent = @qry.sum
@customers_average_per_order = @qry.avg
@customers_total_orders = @qry.counthttps://stackoverflow.com/questions/32736653
复制相似问题