我试图在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
事件。在那种情况下,文件路径是正确的,但文件尚未创建。
答案 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