回形针preserve_files选项,使用 proc / lambda 定义



我试图用这样的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在模型时被清除 被销毁,因此在恢复对象时它仍然存在 后。

您描述的功能(上传到多个对象时仅保存一次图像)确实很有趣,尽管回形针中不包含。

最新更新