使用proc / lambda定义的Paperclip preserve_files选项

时间:2015-01-12 15:27:46

标签: ruby-on-rails ruby paperclip

我试图用这样的Proc对象定义Paperclip的preserve_files选项:

class Image < ActiveRecord::Base

  has_attached_file :asset, styles: {
                          thumb: "100x100#"
                        }, 
                        preserve_files: Proc.new { |image| Image.where(asset_fingerprint: image.asset_fingerprint).where.not(id: image.id).any? ? true : false }

 end

但它的行为就像它总是“真实”一样。 有没有办法正确定义?

重点是具有相同指纹的文件只保存在存储器上一次,但如果另一个保存的Image对象正在使用它,则无法删除文件本身。

1 个答案:

答案 0 :(得分:0)

preserve_files选项定义在删除文件所属的对象时是保存还是删除文件。

来自paperclip documentation

  

这样可以防止在模型中消除some_attachment   被破坏,因此当对象恢复时它仍然存在   后面。

您描述的功能(上传到多个对象时仅保存图像一次)非常有趣,但回形针中不包含此内容。