加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何解决ActiveStorage URL的N 1?

发布时间:2020-12-17 01:24:46 所属栏目:百科 来源:网络整理
导读:你如何用他们的URL预加载所有记录? 这是我在jbuilder中为获取URL而做的事情: # views/users/index.json.jbuilder...json.avatar_url user.avatar.attached? rails_blob_url(user.avatar)...Comment has_one :userUser has_one_attached :avatar 你会如何预
你如何用他们的URL预加载所有记录?

这是我在jbuilder中为获取URL而做的事情:

# views/users/index.json.jbuilder
...
json.avatar_url user.avatar.attached? && rails_blob_url(user.avatar)
...


Comment
    has_one :user

User
    has_one_attached :avatar

你会如何预加载所有用户及其头像?

Comments.includes(users: :avatar)

产生以下错误:

ActiveRecord::AssociationNotFoundError (Association named ‘avatar’ was not found on User; perhaps you misspelled it?)

执行时弹出相同的错误:

User.includes(:avatar)

解决方法

对于名为avatar的单个附件,Active Storage会添加一个with_attached_avatar范围,用于预加载相关关联:

@users.with_attached_avatar.each do |user|
  # ...
end

请参阅has_one_attached的API文档.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读