यहां बताया गया है कि मैंने सभी आवश्यक मॉडल कैसे शामिल किए, इस क्वेरी का अनुवाद 5 sql क्वेरी में किया गया है क्योंकि प्रीलोड शामिल नहीं होता है (एक अलग क्वेरी में चलता है)।
Message.joins("LEFT JOIN messages AS m ON messages.id != m.id
AND m.conversation_id = messages.conversation_id
AND messages.created_at < m.created_at")
.where('m.id IS NULL')
.joins("INNER JOIN conversation_participants AS cp
ON cp.conversation_id = messages.conversation_id
AND cp.user_id = #{user_id}")
.order("cp.seen, cp.updated_at DESC")
.limit(5)
.includes(:sender)
.includes(conversation: [{conversation_participants: :user}])