Rails: 如何预先加载属于关联模型的附件?

Rails: How to eager load attachments belonging to an associated model?

在我的 Rails v5.2.4.1 应用程序 (ruby v2.6.1) 中,我正在使用工作查询加载一堆消息。每条消息 belongs_to 一个 :user 模型和用户 has_one_attached :photo。我很想为用户加载这样的所有消息:

Message.<query>.includes(:user)

现在,此代码 photo.attached? ? photo : 'default_avatar.png' 会产生如下查询:

SELECT  "active_storage_attachments".* FROM "active_storage_attachments" WHERE "active_storage_attachments"."record_id" =  AND "active_storage_attachments"."record_type" =  AND "active_storage_attachments"."name" =  LIMIT   [["record_id", 32], ["record_type", "User"], ["name", "photo"], ["LIMIT", 1]]

如何使用我的查询预先加载 user.photouser.photo.attached?

经过一番研究,我找到了这个问题的答案。我在 the docs 中忽略了它。通过在包含中使用 <association>_attachment 解决了该问题。所以在我的问题中,预加载(photo)是使用以下代码完成的

Message.<query>.includes(user: :photo_attachment)