ActiveRecord::StatementInvalid 尝试渲染狂欢合集时出错

ActiveRecord::StatementInvalid error trying to render spree collection

我正在尝试使用此显示我的 spree 商店中最畅销的产品相关配件:

Spree::Product.class_eval do
  def best_selling_accessories
    accessories.active.select("spree_products.*, SUM(spree_line_items.quantity) AS total_qty, spree_line_items.variant_id").
    joins(:line_items).joins("INNER JOIN spree_orders ON spree_orders.id = spree_line_items.order_id").
    where("spree_orders.state = 'complete'").
    group("spree_line_items.variant_id, spree_products.id").
    order("total_qty DESC")
  end
end

在我的控制器中,我正在做:

@products = @spree_product.best_selling_accessories

当我尝试渲染视图时,我得到:

PG::UndefinedColumn: ERROR: column "total_qty" does not exist LINE 1: ...line_items.variant_id, spree_products.id ORDER BY total_qty

如果我使用更好的错误 shell 和手动 运行 局部渲染:

render "spree/shared/products", products: @products

它returns正确html。

地图还 returns 来自更好错误的正确结果 shell:

>> @products.map { |p| p.total_qty }
=> [14, 10, 7, 7, 4, 3, 3, 3, 3, 3, 1, 1, 1]

所以我想知道,如果它在更好的错误 shell 和 returns 中正确呈现所有正确的产品,当我请求 @products 时,为什么 activerecord 会抛出该错误?

我只需要对结果调用 to_a

我仍然不明白为什么我可以手动 运行 所有命令,但它们 return 是正确的结果。