背景:
我正在开发Rails应用程序,在某些模型中,我正在使用paperclip gem
来保存附件。在相同的型号中,我使用public_activity gem
跟踪模型更改&我已经根据该功能准备了还原功能,以便能够在特定条件下撤消该模型上的更改。现在,使用纸袋选项 :preserve_files => true
,在delete
的情况下,获取旧文件很简单,但是如果update
,我不知道如何。
问题:
public_activity gem
已经使用了before_action
回调,除了纸袋文件更新外,我可以处理所有肮脏字段。因此,如何在不更改模型或添加额外回调的情况下获取肮脏的更新文件(因为我在多个模型中使用了此成就,而撤消功能是通用的(。
注意:
我正在使用 File.exist?(paperclip_attachment.path)
检查文件是否仍然存在,并且在public_activity
的update
回调的情况下返回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
的容器文件夹,然后检查最新创建的文件并保存其路径在撤消步骤中使用。