0

我在理解 after_save rails 回调时遇到问题。我的模型中有一个片段:

  after_save :log_creation

  private 

    def log_creation
      logger.info "RECEIVED => #{ self.name } - #{ self.value } - #{ self.id }"
      path_to_url = url_for({ :host => "localhost:8080", :action=>"show", :controller=>"testing", :format =>"pdf", :id => self })
      logger.info path_to_url
      file = open(path_to_url, "r").read
      logger.info file
    end

在开发日志中,我得到了前两个 logger.info 的预期信息。第三个我不明白,因为我收到 404 异常 (ActiveRecord::RecordNotFound)。

那么,我做错了什么?

PDF 生成工作正常(使用 PDFkit),如果我评论 after_save 行并尝试访问 URL 就可以了,但是当我尝试在 after_save 上访问它时,它无法正常工作,因为我没有预料到。

所有这些都是为了发送附有 PDF 的电子邮件(带有邮件程序)。它会下载PDF(通过受控)然后发送。

4

1 回答 1

1

我认为问题与交易有关。新模型已保存,但交易尚未结束。尝试after_commit代替after_save. 有关所有不同回调的详细信息,请参阅有关回调的文档。

于 2011-10-11T15:31:21.000 回答