【问题标题】:Paperclip Get dirty file before update回形针在更新前获取脏文件
【发布时间】:2017-04-19 20:36:39
【问题描述】:

背景:

我正在开发 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回调相同)。

【问题讨论】:

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


    【解决方案1】:

    我已经做了一个简单的方法来获取脏文件,只需在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的容器文件夹然后检查最新创建的文件并保存它的路径以在撤消步骤中使用。

    【讨论】:

      猜你喜欢
      • 2018-07-16
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2012-05-04
      相关资源
      最近更新 更多