Соглашение для имен ассоциаций вложений
Ассоциации привязок именуются с использованием следующего соглашения:
<NAME OF ATTACHMENT>_attachment
Например, если у вас есть has_one_attached :avatar
, тогда ассоциацияимя будет avatar_attachment
.
Запрос вложений Active Storage
Теперь, когда вы знаете, как называются ассоциации вложений, вы можете запрашивать их, используя joins
, как и любую другую ассоциацию Active Record.
Например, учитывая класс User
ниже
class User
has_one_attached :avatar
end
Вы можете запросить для всех User
записей, которые имеют это вложение , следующим образом
User.joins(:avatar_attachment)
Выполняется INNER JOIN
, который возвращает только те записи, которые имеют вложение.
Вы можете запросить все User
записи, которые НЕ имеют этого вложения , как это
User.
left_joins(:avatar_attachment).
group(:id).
having("COUNT(active_storage_attachments) = 0")