Dragonfly在Model.save之前添加图像存储

时间:2012-08-05 09:15:53

标签: amazon-s3 dragonfly-gem

Dragonfly doc意味着在保存模型之前不会向数据存储区写入任何内容:

  

保存模型后,before_save回调会将数据保留   应用程序配置的数据存储

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

  1. 浏览器上传图片或提供image_url。
  2. 新模型实例:@article = Article.new(params[:article])
  3. 就是这样。如果我通过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'
    

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

1 个答案:

答案 0 :(得分:0)

这是由使用<%= f.hidden_field :retained_image %>

引起的