你好我有一个特殊的问题。我使用 after_commit 回调来发送通知,但似乎根本没有触发回调。简化后的情况如下:
class Message < ActiveRecord::Base
after_commit :do_something
def do_something
raise 'Doing something'
end
end
然后我希望在打开控制台并创建消息时看到提升。但什么也没有发生。此外,如果我完全删除 'do_something' 方法,rails 甚至不会抱怨。请注意,这不是使用事务性固定装置进行的测试。我什至看到数据库中提交的记录。我的 Rails 版本是 3.0.9。感谢您的帮助,特别是如果它很好的话:-)
编辑:我后来了解到,当我将代码部署到另一台机器时,回调 DID 被触发。所以这一定与我的设置有关。不过,我仍然希望您能深入了解造成这种情况的原因。
编辑2:来自评论。
- 数据库是 MySQL,因此存在事务。
- 指定回调的操作没有帮助(:on => :create)。
- 我需要 after_commit 而没有其他回调