回形针更新前获取脏文件
Paperclip Get dirty file before update
背景:
我正在开发 Rails 应用程序,在某些模型中我使用 paperclip gem
来保存附件。在相同的模型中,我使用 public_activity gem
来跟踪模型更改,并且我已经准备好基于此的恢复功能,以便能够在特定条件下撤消对该模型的更改。
现在使用回形针选项 :preserve_files => true
在 delete
的情况下获取旧文件很简单,但在 update
的情况下,我不知道如何。
问题:
public_activity gem
已经在使用 before_action
回调,我可以处理除 Paperclip 文件更新之外的所有脏字段。
那么如何在不更改模型或添加额外回调的情况下获取脏更新文件(因为我在多个模型中使用此成就并且撤消功能是通用的)。
注:
我正在使用 File.exist?(paperclip_attachment.path)
检查文件是否仍然存在,在 public_activity
的 update
回调的情况下它 returns 错误(我认为它与 before_update
回调相同)。
我使用了一种简单的方法来获取脏文件,只需在 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
然后检查最新创建的文件并保存它的路径以在撤消步骤中使用。
背景:
我正在开发 Rails 应用程序,在某些模型中我使用 paperclip gem
来保存附件。在相同的模型中,我使用 public_activity gem
来跟踪模型更改,并且我已经准备好基于此的恢复功能,以便能够在特定条件下撤消对该模型的更改。
现在使用回形针选项 :preserve_files => true
在 delete
的情况下获取旧文件很简单,但在 update
的情况下,我不知道如何。
问题:
public_activity gem
已经在使用 before_action
回调,我可以处理除 Paperclip 文件更新之外的所有脏字段。
那么如何在不更改模型或添加额外回调的情况下获取脏更新文件(因为我在多个模型中使用此成就并且撤消功能是通用的)。
注:
我正在使用 File.exist?(paperclip_attachment.path)
检查文件是否仍然存在,在 public_activity
的 update
回调的情况下它 returns 错误(我认为它与 before_update
回调相同)。
我使用了一种简单的方法来获取脏文件,只需在 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
然后检查最新创建的文件并保存它的路径以在撤消步骤中使用。