我一直在考虑gmail如何查询他们的对话。我知道他们使用不同的技术,但我想尽可能地模仿。
目前我获取对话列表,然后我必须为每个对话获取消息。我可以使用普通连接:
Conversation.joins(:messages).first
但这将加入每条消息,我只需要最后一条消息。我将如何构建这个查询?当我做 Conversation.all 时加入会更好:
Conversation.joins(:messages).all # but only join last message for each conversation
另外,我可以使用条件来加入具有特定用户 ID 的最后一条消息吗?
message.user_id = 1
Conversation.joins(:messages).all # only last message where user_id = 1
如果这有助于演示查询,我正在使用 squeel。
获取对话以及每个对话的最后一条消息的最佳方式是什么?