您如何预加载所有记录及其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(在用户上找不到名为“ avatar”的关联;也许您拼错了?)
执行时会弹出相同的错误:
User.includes(:avatar)
最佳答案
对于名为:avatar
的单个附件,Active Storage添加一个with_attached_avatar
范围,该范围预加载了相关的关联:
@users.with_attached_avatar.each do |user|
# ...
end
请参阅
has_one_attached
的API文档。关于ruby-on-rails - 您如何为ActiveStorage URL解决N + 1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51785703/