Вот проблема:
- У меня есть коллекция записей: квитанции. Я хочу получить уникальный список проектов, которые связаны с этими объектами поступления, эффективным способом. Я не смог найти аналогичный вопрос / решение для SO для этого конкретного типа проблемы.
Это то, что я хочу:
@projects = @receipts.getUniqueProjects()
# Project.rb
has_many :conversations
# Conversation.rb
has_many :messages
belongs_to :project
# Message.rb
has_many :receipts
belongs_to :conversation
# Receipt.rb
belongs_to :message
Возможно ли это?
Выглядит многообещающе следующее: но как мне тогда получить доступ к записям великого родителя? Без перебора дочерних записей и огромных накладных расходов базы данных?
Receipt.joins(message: [conversation: :project])
Любые указатели были бы очень благодарны.
Вот что я использовал:
@projects = Project.joins(conversations: {messages: :receipts} ).where(receipts: [1,2,3,4]).uniq
Спасибо Василиса - цените дальновидность, чтобы увидеть, что это была проблема XY.