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 是正确的结果。
我正在尝试使用此显示我的 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 是正确的结果。