- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
产品 has_many :assets
Assets 属于:产品
Asset has_attached_file :photo
使用 Paperclip(带有所有标准 Paperclip 选项;一些样式,S3 存储)。
如果我形成一个类似p = Product.includes(:assets)
的产品查询,我可以调用 Assets 的每个实际属性,而不会引发任何额外的数据库查询,例如:
p = Product.includes(:assets)
p.each { |a| print a.assets.first.title }
Asset
上的 title
属性(这是一个数据库列)打印,没有查询。
获取 Paperclip 生成的 URL:
p = Product.includes(:assets)
p.each { |a| print a.assets.first.photo.url }
对每个 Product
进行单独的附加查询:
Product Load (0.3ms) SELECT "products".* FROM "products" WHERE "products"."id" = 2 LIMIT 1
根据 this G.Groups posting ,我不应该在每次通过循环时访问数据库,但我是。
有没有办法避免每次迭代都产生额外的数据库命中,而是一次收集所有数据?我是否忽略了一些简单的事情?
Rails 3.0.9、REE 1.8.7、Paperclip 2.3.11。
已更新,修复
问题是在我的 Paperclip 设置中,我将 :product_id
作为 :path
的一部分: :attachment/:product_id/:filename-: style.:extension
,这会导致循环中每次迭代的额外 Product 查询。
通过将查询更改为 p = Product.includes(:assets => [:product]).all
,它删除了额外的查询。
最佳答案
如果您使用其中一个查询分析器插件试试查询审阅器,或者如果您使用的是 newrelic,开发模式包括这个,我们可以更快地找到问题的根源。您将获得每个查询的堆栈跟踪。我不认为它与预加载有任何关系——如果它与预加载有任何关系,您将获得额外的 Assets 加载而不是产品加载。
关于ruby-on-rails - 急切加载 Paperclip 的 has_attached_file 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500124/
我模型的片段: attr_accessible :package1_file_name, :package2_file_name has_attached_file :package1 has_att
不确定我是否在这里完成了所有操作。我将 Paperclip gem 添加到我的 Gemfile 并进行了捆绑安装。我遵循了 Paperclips Github 页面上的自述说明。 我不确定是否需要安装
在检查插件的 rails3 分支后,Paperclip 会产生此错误。 我的 Gemfile 有以下几行: gem 'paperclip', :git => 'http://github.com/th
Paperclip 提供了以下代码: has_attached_file :image, ... ... 它在多个模型中重复。 提取到模块: module AttachedImage includ
产品 has_many :assets Assets 属于:产品 Asset has_attached_file :photo 使用 Paperclip(带有所有标准 Paperclip 选项;一些样
我的应用允许用户上传图片和歌曲,然后下载。我还将 has_attached_file 与 Paperclip 一起使用,以便将其与模型连接。 图像速度很快,而且很容易调整大小。但是,当用户上传一首歌曲
这是我在 5 种不同模型(相同代码)中编写的代码。 has_attached_file :image, s3_region: 'ap-northeast-1', storage: :s
我刚刚安装了 Paperclip 插件,但收到以下错误消息,但我不确定原因: NoMethodError (undefined method `has_attached_file' for #):
我正在尝试在我的 Rails 应用程序中使用回形针插件来上传帖子的图像。我在 Ubuntu 10.04 操作系统上使用 Rails 2.0.2 和 ruby 1.8.7 用于项目特定目的。 我指的
我是一名优秀的程序员,十分优秀!