Convention for attachment association names
Attachment associations are named using the following convention:
<NAME OF ATTACHMENT>_attachment
For example, if you have has_one_attached :avatar
then the association name will be avatar_attachment
.
Querying for Active Storage attachments
Now that you know how attachment associations are named, you can query them by using joins
as you would any other Active Record association.
For example, given the User
class below
class User
has_one_attached :avatar
end
You can query for all User
records that have that attachment as follows
User.joins(:avatar_attachment)
This performs an INNER JOIN
which will only return records which have the attachment.
You can query for all User
records that DO NOT have that attachment like this
User.
left_joins(:avatar_attachment).
group(:id).
having("COUNT(active_storage_attachments) = 0")
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…