Paperclip - 保存文件后运行方法?

Jon*_*ers 9 ruby-on-rails paperclip ruby-on-rails-4

我正在开发一个需要接受文件上传的项目.上传文件后,我正在进行一些处理 - 从文件中提取信息.我最终计划在后台工作程序中运行它,但它当前正在内联运行.

我已经尝试使用after_create和after_save来处理文件,但似乎我的方法在Paperclip的save方法之前运行 - 所以我的测试失败了"没有这样的文件或目录".

有没有办法尽早触发save方法,或者在文件保存到文件系统后以某种方式运行我的方法?

Gro*_*ery 7

您无法在回调中读取paperclip文件,因为它尚未保存到文件系统(或对接).为什么,我不确定.

编辑:原因是回形针通过after_save回调写出文件.回调发生在之后after_create

但是,您可以获取文件有效负载以进行处理.例如:

class Foo < ActiveRecord::Base

  has_attached_file :csv

  after_create :process_csv

  def process_csv
    CSV.parse(self.csv.queued_for_write[:original].read)
    # .. do stuff
  end

end
Run Code Online (Sandbox Code Playgroud)

我必须在2分钟前做到这一点.希望这可以帮助.

  • 我该怎么做图像?使用回形针上传图像时,想要在创建记录后发送电子邮件但没有这样的文件错误.我想发送附有该图片的电子邮件.我该怎么办? (2认同)