我在这个主题上看到的唯一一个适度有用的线程是在这里:
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/709d97e06b373786
我认为 Matchu 的解决方案可能是正确的,只需快速查看 attachment_fu 代码即可。如果 Matchu 可以分享他修改后的 save_attachment 的补丁或片段,我会很高兴?方法。我将自己深入研究这个问题,因为这对我来说已经成为一个问题,而且它可能比完全替换 attachment_fu 工作更少......
更新
根据 Matchu 的大纲,我想出了一个简短(如果不优雅)的解决方案,在经过轻度测试后似乎可以工作。
我修改了 save_attachment?在 attachment_fu/attachment_fu.rb 中:
def save_attachment?
return false unless (thumbnail || !full_filename || @active_upload) #added
File.file?(temp_path.to_s)
end
...检查Matchu制定的条件。我想不出一种优雅的方式来判断数据是否已传递给 upload_data=setter 方法(如果有人有更好的方法来做到这一点,我全神贯注;我仍然是 ruby/rails 菜鸟) 所以我还在uploaded_data= 中添加了一行来设置全局变量@active_upload:
def uploaded_data=(file_data)
return nil if file_data.nil? || file_data.size == 0
self.content_type = file_data.content_type
self.filename = file_data.original_filename if respond_to?(:filename)
@active_upload=true # added
if file_data.is_a?(StringIO)
file_data.rewind
self.temp_data = file_data.read
else
self.temp_path = file_data
end
end
希望这会有所帮助,如果有人有更优雅的方式来处理我在全局变量中所做的事情,我很想听听。