Paperclip更新前获取脏文件

时间:2017-04-19 07:42:08

标签: ruby-on-rails paperclip public-activity

背景

我正在开发Rails应用程序,在某些模型中,我使用paperclip gem来保存附件。在相同的模型中,我使用public_activity gem来跟踪模型的变化&我已经准备好基于它的恢复功能,以便能够根据特定条件撤消对该模型的更改。 现在使用回形针选项:preserve_files => true,在delete的情况下获取旧文件很简单,但在update的情况下,我不知道如何。

问题:

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

注意:

我正在使用File.exist?(paperclip_attachment.path)来检查文件是否仍然存在,如果update回调public_activity,则返回false(我认为它与{相同} {1}}回调)。

1 个答案:

答案 0 :(得分:0)

我在public_activity更新回调中只使用编辑撤消功能来做一个简单的方法来获取脏文件:

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的容器文件夹,然后检查最新创建的文件并保存它在撤消步骤中使用的路径。