如何在 Rails 中编写 "distinct on" 查找器方法?

How do I write a "distinct on" finder method in Rails?

我将 RoR 5.0.1 与 PostGres 9.5 结合使用。我有以下查询,它根据日期

从特定的 table (由相应的模型表示)获取不同的记录
select distinct on (crypto_currency_id) t.* 
from crypto_prices t 
order by crypto_currency_id, last_updated desc;

我的模型名称是 CryptoPrice,但我不清楚如何将上面的转换为 finder 方法。这个

CryptoPrice.distinct.pluck(:crypto_currency_id)

与我发现的不一样。

Postgres DISTINCT ON 语句没有 Rails 内置方法。看来您可以在 select:

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

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