2017-07-29 2 views
1

Ich benutze RoR 5.0.1 mit PostGres 9.5. Ich habe die folgende Abfrage, die verschiedenen Datensätze aus einer bestimmten Tabelle wird (durch ein entsprechendes Modell dargestellt), basierend auf einem DatumWie schreibe ich eine "distinct on" Finder-Methode in Rails?

select distinct on (crypto_currency_id) t.* 
from crypto_prices t 
order by crypto_currency_id, last_updated desc; 

Mein Modellname CryptoPrice ist, aber ich bin unklar, wie die oben in einen Sucher konvertieren Methode. Dieses

CryptoPrice.distinct.pluck(:crypto_currency_id) 

macht nicht dasselbe, wie ich entdeckte.

Antwort

3

Es gibt keine integrierte Rails-Methode für Postgres DISTINCT ON Anweisung. Es scheint, wie Sie DISTINCT ON in Ihrer select verwenden:

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

Dies wird produzieren genau die gleiche Abfrage wie in Ihrem Beispiel.

Verwandte Themen