gpt4 book ai didi

ruby-on-rails - 最近的价格和 will_paginate

转载 作者:行者123 更新时间:2023-11-29 13:47:24 26 4
gpt4 key购买 nike

我有两个模型 ProductPriceProduct 可以有多个价格,每个都有不同的 created_at,因此我可以随时了解产品的价格历史记录。

我想在每个产品旁边显示具有最新价格的产品列表,并使用 will_paginate 每页分页 10 个产品。

我在我的 ProductsController 中写了这样的东西:

@products = Product.includes(:prices).references(:prices).
select('DISTINCT ON (products.id) *').
order('products.id, prices.created_at ASC').
paginate(page: params[:page])

当我检查此查询的 .to_sql 时,我看到 will_paginate 添加了 WHERE\"products\".\"id\"IN (2, 2, 3, 3, 4 , 4, 5, 5, 7, 7),我得到 5 个而不是 10 个产品。

当我尝试时:

Product.includes(:prices).references(:prices).
select('DISTINCT ON (products.id) *').
order('products.id, prices.created_at ASC').limit(10).pluck(:id)

我得到 => [2, 2, 3, 3, 4, 4, 5, 5, 7, 7]

知道如何更改它以获得 10 种可以访问最新价格的产品吗?

最佳答案

我想我设法做到了这一点:

@products = Product.
select('DISTINCT ON(products.id) products.*, prices.value as recent_price').
joins('LEFT OUTER JOIN prices ON products.id = prices.product_id').
order('products.id ASC, prices.created_at DESC').
paginate(page: params[:page])

关于ruby-on-rails - 最近的价格和 will_paginate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46161487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com