我们假设我们有一个PostsController
和一个Post
模型,它有多个图像。
此图片是在after_save
回调中创建的。
现在我们有一个巨大的请求,附带20个编码图像,当回调处于其中间时,它会超时。
现在的状态是什么?
帖子是否存储在数据库中?
创建图像的位置?
如果图片是在before_save
回调中创建的,它会改变什么吗?
答案 0 :(得分:0)
数据库事务将在after_commit
以外的任何回调中回滚。在提交数据库事务之前,它不会保留在磁盘上。
如果让我们说在超时之前处理了一半的图像,那么将处理那一半的图像。真的没有办法回滚。
以下是available callbacks的链接及其运行顺序。
最后,最好通过Active Job异步运行图像处理,这样您就不太可能遇到超时问题。