RoR:访问after_save回调中生成的页面

时间:2011-10-11 11:57:56

标签: ruby-on-rails ruby activerecord pdfkit

我在理解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(通过受控制)然后发送它。

1 个答案:

答案 0 :(得分:1)

我认为问题与交易有关。新模型已保存,但交易尚未结束。请尝试after_commit而不是after_save。有关所有不同回调的详细信息,请参阅the documentation on callbacks