如何在 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)
这将生成与您的实例中完全相同的查询。
我将 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)
这将生成与您的实例中完全相同的查询。