kch*_*hak 3 eager-loading ruby-on-rails-5 rails-activestorage
在我的 Rails v5.2.4.1 应用程序 (ruby v2.6.1) 中,我使用工作查询加载一堆消息。每条消息都有belongs_to一个:usermodel 和 user has_one_attached :photo。我渴望向用户加载所有这样的消息:
Message.<query>.includes(:user)
Run Code Online (Sandbox Code Playgroud)
现在,这段代码photo.attached? ? photo : 'default_avatar.png'会产生如下查询:
SELECT "active_storage_attachments".* FROM "active_storage_attachments" WHERE "active_storage_attachments"."record_id" = $1 AND "active_storage_attachments"."record_type" = $2 AND "active_storage_attachments"."name" = $3 LIMIT $4 [["record_id", 32], ["record_type", "User"], ["name", "photo"], ["LIMIT", 1]]
Run Code Online (Sandbox Code Playgroud)
我如何立即加载user.photo我user.photo.attached?的查询?
经过一番研究,我找到了这个问题的答案。我在文档中忽略了它。<association>_attachment通过在包含中使用来解决该问题。所以在我的问题中,急切加载( for photo)是使用以下代码完成的
Message.<query>.includes(user: :photo_attachment)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |