我在理解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(通过受控制)然后发送它。
答案 0 :(得分:1)
我认为问题与交易有关。新模型已保存,但交易尚未结束。请尝试after_commit
而不是after_save
。有关所有不同回调的详细信息,请参阅the documentation on callbacks。