如何在Rails中编写一个“distinct on”查找方法?

10
我正在使用RoR 5.0.1和PostGres 9.5。我有以下查询,根据日期从特定表(由相应的模型表示)获取不同的记录。
select distinct on (crypto_currency_id) t.* 
from crypto_prices t 
order by crypto_currency_id, last_updated desc;

我的模型名称是CryptoPrice,但我不清楚如何将上述内容转换为查找方法。

CryptoPrice.distinct.pluck(:crypto_currency_id)

不做相同的事情,正如我所发现的。

1个回答

18

Rails没有内置Postgres 的 DISTINCT ON 语句方法。似乎你可以在你的select语句中使用DISTINCT ON

CryptoPrice.select('DISTINCT ON (crypto_currency_id) *')
           .order(:crypto_currency_id, last_updated: :desc)

这将产生与您的实例完全相同的查询。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接