Запрос вложений, связанных с данной записью
Вы можете запросить вложения напрямую, используя класс ActiveStorage::Attachment
. Атрибут record
- это полиморфная ассоциация, которая присоединяется к присоединенному классу.
Вот пример
ActiveStorage::Attachment.where(record: Job.first)
Запрос вложений, связанных с набором записей
Вы также можете передать набор записей в опцию record
ActiveStorage::Attachment.where(record: Job.all)
Запрос вложений, связанных с несколькими наборами записей
Вы можете найти вложения, связанные с несколькими наборами записей, используя or
ActiveStorage::Attachment.where(record: Job.all).or(ActiveStorage::Attachment.where(record: Message.all))
Собираем это вместе ...
Чтобы найти все вложения, связанные с несколькими наборами записей, связанных с данной записью
client = Client.first
ActiveStorage::Attachment.where(record: client.jobs).or(ActiveStorage::Attachment.where(record: client.messages))
Это не красиво, но эффективно. Все запросы выполняются через Active Record, что означает, что это происходит в одном операторе SQL и не требует загрузки каких-либо объектов в память.