Я застрял в проблеме с рельсами, будучи нубом здесь.Учитывая следующие отношения.
conversation has_many messages
messages belongs_to conversation
messages has_many documents and vice versa, through document_messages
Мне нужно найти все документы в этом разговоре для данного идентификатора разговора.Я понял, что работает со следующими
c.messages.map(&:documents).select{ |doc| doc.length > 0 }
Но, насколько я понимаю, он берет все из базы данных и выполняет фильтрацию в приложении, но мне нужно отфильтровать его в базе данных (где предложение?) например, conversation.messages.where(document.exists).map(&:documents)
Редактировать: я пришел к следующему sql-запросу, который работает
SELECT document.id FROM
conversation INNER JOIN message
ON conversation.id = message.c_id
INNER JOIN document_messages
ON message.id = document_messages.m_id
INNER JOIN document
ON document.id = document_messages.d_id
where conversation.id = given_id