Paperclip:文件创建后触发的事件的名称?

时间:2015-02-28 04:19:55

标签: ruby-on-rails paperclip

我试图在Paperclip转换为MP4后删除一些动画GIF - 但是在文件系统中创建文件后触发事件的名称是什么?

经过测试dgilperez's answer:在文件系统上创建文件之前触发after_post_process事件。

def on_after_post_process
      puts(self.attachment.path)
end

打印:

 => "/home/user/rails-repo/public/system/photos/attachments//original/file.gif"

但实际上文件创建于:

 => "/home/user/rails-repo/public/system/photos/attachments/000/000/<id>/original/file.gif"

还尝试了ActiveRecord的after_create事件。在那种情况下,文件路径是正确的,但文件尚未创建。

2 个答案:

答案 0 :(得分:0)

the docs开始,您可以使用after_post_process回调或更具体的after_<attachment>_post_process

答案 1 :(得分:0)

Paperclip在after_save回调中将附件保存到磁盘。 after_save后发生了after_create,因此您无法使用after_create。您可以创建自己的after_save并让它只运行新记录:

  after_save :process_file
  def process_file
    # Don't do anything on update. new_record? is always true here.
    return if !id_changed?
    # XXX Do your business here
  end