2012-08-05 121 views
0

之前存储的蜻蜓文档意味着没有数据被写入到数据存储,直到模型保存:蜻蜓添加图像Model.save

当模型保存,一个before_save回调的数据一直持续到 的应用的配置数据存储

使用Rails和Dragonfly 0.9.12,我有一个模型文章image_accessor :image,我的商店是S3。 以下就足以在S3中存储图像:

  1. 浏览器上传图像或提供image_url。
  2. 新模型实例:@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' 

我该如何解决这个问题?谢谢。

回答

0

这是使用<%= f.hidden_field :retained_image %>引起的。