2017-04-10 1 views
0

Ich habe ein Problem mit active_record Abfrage, sorry, ich bin neu mit Schienen.Rails Filtern von letzten Kind Attribut

Ich habe ein Modell Abonnement, es hat Kind AbonnementVersion, wo ich alle Informationen, die aktualisiert werden können.

Bei API-Aufrufe, zum Beispiel get Anfrage, füge ich Daten von Abonnement und aktuelle Version (@subscription.subscription_versions.last) und geben Sie diesen zusammengeführten Hash für die Antwort, aber ich habe mit Problem der Sortierung und Filterung von Werten in dieser aktuellen Version konfrontiert.

Wenn ich versuche, dass @subscriptions.joins(:subscription_versions).order('subscription_versions.version') es dauert alle Version und sortieren nach Mindestwert, auch wenn Abonnement hat 5 Versionen und die neueste ist 5. (aktuelle_Version).

Also ... kann mir jemand Ratschläge geben, wie man eine Abfrage erzeugt, ohne ein neues Feld im Subskriptionsmodell current_version_id hinzuzufügen?

Antwort

0

Wenn ich richtig verstehe, möchten Sie nur die letzte subscription_version zurückgeben?

Je nachdem, wie die Versionen sortiert sind, könnten Sie dies tun (habe nicht getestet):

@subscriptions.joins(:subscription_versions).order('subscription_versions.version').first 

oder

@subscriptions.joins(:subscription_versions).order('subscription_versions.version').last 
+0

In diesem Fall ist es nur zurück erste/letzte Abonnement von sortiert Sammlung, aber ich brauche, dass es immer von letzten subscription_version sortiert –

+1

Ah dann habe ich Ihre Frage missverstanden. Standardmäßig sortiert Rails in aufsteigender Reihenfolge. Sie können hinzufügen: desc in absteigender Reihenfolge wie folgt sortieren: User.order (email:: desc) – stoerebink

+0

Hat das Ihr Problem gelöst? – stoerebink

Verwandte Themen