PaperClip在更新之前获取脏文件



背景:

我正在开发Rails应用程序,在某些模型中,我正在使用paperclip gem来保存附件。在相同的型号中,我使用public_activity gem跟踪模型更改&我已经根据该功能准备了还原功能,以便能够在特定条件下撤消该模型上的更改。现在,使用纸袋选项 :preserve_files => true,在delete的情况下,获取旧文件很简单,但是如果update,我不知道如何。

问题:

public_activity gem已经使用了before_action回调,除了纸袋文件更新外,我可以处理所有肮脏字段。因此,如何在不更改模型或添加额外回调的情况下获取肮脏的更新文件(因为我在多个模型中使用了此成就,而撤消功能是通用的(。

注意:

我正在使用 File.exist?(paperclip_attachment.path)检查文件是否仍然存在,并且在public_activityupdate回调的情况下返回false(我认为它与before_update回调相同(。

我已经采取了一种简单的方法来获取肮脏的文件,并在public_activity中只需编辑upo功能更新回调:

dirty_file_path = Dir.glob(File.join(File.dirname(paper_clip_attachment.path), '*.*')).max { |a,b| File.ctime(a) <=> File.ctime(b) }

paper_clip_attachment.path包括文件的路径,但尚未创建文件本身。

上面的代码只需检查文件paper_clip_attachment.path的容器文件夹,然后检查最新创建的文件并保存其路径在撤消步骤中使用。

最新更新