2012-08-05 127 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 %>引起的。