我试图用这样的Proc对象定义回形针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
但它的行为就像它总是"真实"地返回一样。有没有办法正确定义它?
关键是具有相同指纹的文件仅在存储中保存一次,但如果另一个保存的图像对象正在使用该文件,则无法删除文件本身。
preserve_files
选项定义在删除文件所属的对象时是应保存还是删除文件。
从回形针文档中:
这将防止
some_attachment
在模型时被清除 被销毁,因此在恢复对象时它仍然存在 后。
您描述的功能(上传到多个对象时仅保存一次图像)确实很有趣,尽管回形针中不包含。