rails Query Join, Sortieren nach, Gruppieren nach Problem

7

Habe drei Modelle im Projekt

  • Konversation
  • conversation_message
  • Nachricht

Conversation.rb

%Vor%

ConversationMessage.rb

%Vor%

Message.rb

%Vor%

Ich möchte also alle Konversationen von current_user abrufen und sie in der Reihenfolge der zuletzt empfangenen oder gesendeten Nachrichten anzeigen. Außerdem möchten Sie die einzelne Konversation für alle ihre Nachrichten anzeigen und die Konversation muss durch darin enthaltene Nachrichten geordnet werden. Verwenden von Schienen 3.0

Ich habe die folgende Abfrage versucht, gibt aber unten einen Fehler Abfrage

%Vor%

Fehler

%Vor%     
chaitanya 08.11.2013, 17:36
quelle

2 Antworten

19

Sie müssen messages.created_at in die group -Klausel einfügen:

%Vor%

Siehe: Spalte" users.id "muss in der GROUP BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden

    
CDub 08.11.2013, 17:41
quelle
6

Sie können vermeiden, mehrere Konversationen mit

anzuzeigen

.order("max(messages.created_at) DESC")

und entfernen messages.created_at von group Abschnitt.

%Vor%

Es gibt Ihnen "einzigartige Konversationen geordnet nach den letzten Kommentaren".

Es ist nicht die reine Bestellung von messages.created_at , aber mit der Änderung von max und min und DESC und ASC wird den Job, den Sie wollen, tun, denke ich.

    
foloinfo 04.08.2015 09:36
quelle

Tags und Links