Как сделать объединение в ассоциации has_many_attached Active Storage? - PullRequest
1 голос
/ 28 июня 2019

Я хотел бы сделать запрос к БД, который находит все записи, к которым прикреплены файлы.

class Departure 
  has_many_attached :pre_trip_documents
end

Однако это не удается:

Departure.joins(:pre_trip_documents).to_sql => #ActiveRecord::ConfigurationError (Can't join 'Departure' to association named 'pre_trip_documents'; perhaps you misspelled it?)

1 Ответ

0 голосов
/ 28 июня 2019

Вы можете сделать:

Departure.joins(:pre_trip_documents_attachments)

Это будет иметь больше смысла, если вы посмотрите на источник has_many_attached, который вы можете найти здесь .

Подводя итог, has_many_attached :pre_trip_documents приводит к:

has_many :"pre_trip_documents_attachments", -> { where(name: "pre_trip_documents") }, as: :record, class_name: "ActiveStorage::Attachment" ...

Итак, звонок Departure.joins(:pre_trip_documents_attachments) дает вам:

SELECT "departures".* FROM "departures" INNER JOIN 
"active_storage_attachments" ON 
"active_storage_attachments"."record_id" = "departures"."id" AND 
"active_storage_attachments"."record_type" = 'Departure' AND 
"active_storage_attachments"."name" = 'pre_trip_documents'
...