【发布时间】:2015-01-24 02:10:12
【问题描述】:
我遇到了 Sidekiq 找不到数据库记录的问题,我想这是因为在 Sidekiq 运行之前事务没有完全提交。我的印象是事务是在块内提交的:
User.transaction do
# db updates here
# commit or rollback
end
MyWorker.perform_async()
所以我的理解是不正确的,即使在块之后,数据库操作可能还没有完全提交?这就是我看到的行为。我听说过after_commit,但我正在使用服务对象并希望将逻辑保留在那里。
【问题讨论】:
-
原来这个区块是一个嵌套事务。
-
感谢@AndrewHallock,我在服务中遇到了完全相同的问题。之前关于 nested transaction 的评论是我所缺少的。
标签: activerecord sidekiq