0

背景:

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

问题:

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

笔记:

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

4

1 回答 1

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

于 2017-04-19T12:13:31.553 回答