【问题标题】:Rails Calculate Total SalesRails 计算总销售额
【发布时间】:2019-08-22 00:24:29
【问题描述】:

我正在查找销售(订单)总价值的总和。基本上,将每种销售产品的价格加在一起。

下面的代码接近解决方案,但我的 Order 表中没有价格 (:price) 列,因为我从 Product 表中选择价格 => order.product.price

如何在 Order.rb 中以如下所示的语法添加产品 :price?

order.rb 参考:Rails: How to sum total price per day

scope :total_sales, ->(date_time = Time.now) { where('created_at BETWEEN ? AND ?',date_time.beginning_of_day, date_time.end_of_day).sum(:price) }

OrdersController.rb

def sales
   @orders = Order.all.where(seller: current_user).order("created_at DESC")
 end 

sales.html.erb

Order.total_sales

【问题讨论】:

    标签: sql ruby-on-rails ruby postgresql ruby-on-rails-4


    【解决方案1】:

    一个订单只有一个产品?如果是这样的话:

    joins(:product).where('orders.created_at BETWEEN ? AND ?', date_time.beginning_of_day, date_time.end_of_day).sum('products.price')
    

    【讨论】:

    • 我试过了,得到错误 PG::UndefinedColumn: ERROR: column orders.price does not exist LINE 1: SELECT SUM(orders.price) FROM "orders" INNER JOIN "products" ON "。 .. 范围 :total_sales, ->(date_time = Time.now) { joins(:product).where('orders.created_at BETWEEN ? AND ?',date_time.beginning_of_day, date_time.end_of_day).sum('orders.price' ) }
    • 检查@Jon 的回答。这是sum('products.price') 不是orders.price
    • 完美!我的错, sum('products.price') 有效。非常感谢你们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多