Dragonfly 文档暗示在保存模型之前不会将任何内容写入数据存储:
保存模型时,before_save 回调将数据持久保存到 App 配置的数据存储区
使用 Rails 和 Dragonfly 0.9.12,我有一个带有 的模型文章image_accessor :image
,我的商店是 S3。以下内容足以在 S3 中存储图像:
- 浏览器上传图片或提供 image_url。
- 新模型实例
@article = Article.new(params[:article])
:)
而已。如果我通过添加处理after_assign :resize_image
,则存储处理后的版本。
这种行为是故意的吗?它导致杂散图像上传到 S3。我并不总是保存@article
到 db,但我仍然需要 Dragonfly 来调整图像大小。(如果您好奇,我会将其作为嵌入数据发送回浏览器进行预览,使用Base64.encode64(@article.image.data)
.)
为了进行调查,我断开了互联网以中断商店的运营。这是跟踪的相关部分:
dragonfly (0.9.12) lib/dragonfly/active_model_extensions/attachment.rb:179:in `store_job!'
dragonfly (0.9.12) lib/dragonfly/active_model_extensions/attachment.rb:118:in `retain!'
dragonfly (0.9.12) lib/dragonfly/active_model_extensions/class_methods.rb:63:in `block (3 levels) in register_dragonfly_app'
mongoid (3.0.3) lib/mongoid/attributes/processing.rb:102:in `process_attribute'
mongoid (3.0.3) lib/mongoid/attributes/processing.rb:27:in `block in process_attributes'
mongoid (3.0.3) lib/mongoid/attributes/processing.rb:25:in `each_pair'
mongoid (3.0.3) lib/mongoid/attributes/processing.rb:25:in `process_attributes'
mongoid (3.0.3) lib/mongoid/document.rb:147:in `block in initialize'
mongoid (3.0.3) lib/mongoid/threaded/lifecycle.rb:84:in `_building'
mongoid (3.0.3) lib/mongoid/document.rb:142:in `initialize'
我怎样才能解决这个问题?谢谢。