Ein Zeichen has_many :conversations through: chats
, und jede Konversation has_many :messages
. Wenn ich @character.conversations
anrufe, möchte ich, dass die Konversationen zum Zeitpunkt der Erstellung der letzten Nachricht der Konversation geordnet werden. Wie ist das codiert?Schienen, Auftragserfassung durch zweischichtige Assoziation
character.rb
has_many :chats, foreign_key: "character_id",
has_many :conversations, through: :chats, source: :conversation
# order: "conversation.messages.last.created_at DESC" # doesn't work
conversation.rb
has_many :chats, foreign_key: "conversation_id"
has_many :characters, through: :chats, source: :character
has_many :messages
Ich habe die default_scope hinzugefügt Sie ** conversation.rb vorgeschlagen **, aber es scheint nicht, Um die Reihenfolge der Konversationen zu beeinflussen, sortiert sie die Nachrichten innerhalb jeder Konversation. Ich möchte, dass es die Gespräche selbst bestellt? – Bazley
@Bazley kannst du '@ character.conversations' einfach machen und die generierte ** SQL ** posten? Sie können dies in Ihrer Konsole ausprobieren und die 'ORDER BY messages.created_at DESC'-Klausel sehen. – dp7