Tôi đã đến một giải pháp chức năng với việc sử dụng DISTINCT ON
:
@messages = Message.select("DISTINCT ON (messages.conversation_id) * ")
.where("messages.sender_id = (?) OR messages.recipient_id = (?)", current_user.id, current_user.id)
.group("messages.conversation_id, messages.updated_at, messages.id, messages.sender_id, messages.recipient_id, messages.sender_deleted, messages.recipient_deleted, messages.body, messages.read_at, messages.ancestry, messages.ancestry_depth, messages.created_at")
Tuy nhiên, điều này sẽ không hoạt động trong SQLite. Tải xuống Postgres và sử dụng nó trực tiếp thay vì phải sử dụng mã SQLite trong quá trình phát triển và mã Postgres trong sản xuất (Heroku) được khuyến khích.