为什么我的Rails回调被调用两次?

问题描述:

我有一个after_commit on::在我的模型中创建回调,并且它被调用两次。在这个回调中有六个方法,其中一些被插入到我的数据库中。恐怕事情会放缓,我的数据库将会增长得太快。为什么我的Rails回调被调用两次?

奇怪的是,我的before_create after_create回调只能执行一次。什么可能导致这个?

简短的回答:使用after_save的,而不是after_commit

龙回答:How to organize complex callbacks in Rails?

+0

不幸的是,没有工作,还是双呼叫。 – Bholzer 2012-08-04 03:11:18

+2

向我们展示一些代码,是否在回调中调用保存? – house9 2012-08-04 03:29:43

+1

不,我不是,我应该吗? 'after_commit:func1,:func2,:func3,:func4,func5,:func6,on :: create# 尽管正在创建,但model.save似乎正在触发回调。这是正常的吗? – Bholzer 2012-08-04 03:41:29

我发现使用before_create解决的问题。

当你使用:

user = User.new 
user.save 

你是射击每次before_save钩。

before_create 

应该工作