首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一个查询中的Rails客户端订单历史记录

一个查询中的Rails客户端订单历史记录
EN

Stack Overflow用户
提问于 2015-09-23 18:06:51
回答 2查看 128关注 0票数 1

我正在尝试生成客户资料页面。该页面包括客户订单历史记录、最新订单及其历史合计。我已经在Customer.where_completed上运行了sum、count和average,但这涉及到那个数据库三次。我觉得一定有更好的办法?

代码语言:javascript
复制
@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)

客户

代码语言:javascript
复制
class Customer < ActiveRecord::Base
    has_many :orders
end

订单

代码语言:javascript
复制
class Order < ActiveRecord::Base
    belongs_to :customer
    scope :completed,-> { where.not(completed_at: nil) }
end
EN

回答 2

Stack Overflow用户

发布于 2015-09-23 19:25:44

你应该试试这个

代码语言:javascript
复制
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]
票数 0
EN

Stack Overflow用户

发布于 2015-09-23 19:38:56

代码语言:javascript
复制
@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.count
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32736653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档