Rails Activerecord回调

时间:2011-08-30 19:45:49

标签: ruby-on-rails activerecord callback

我一直试图找出在rails中调用活动记录的每个回调的时间。

我的具体问题是:是否有一个before_save没有被调用。例如,如果你做了一个创建。

更广泛的方法是每次调用的时间和地点。还要说你修改回调中的现有对象,你必须重新保存,并且你可以在回调中强制保存,是否会保存调用save_callbacks ......你会看到我要去的地方。

2 个答案:

答案 0 :(得分:1)

我不完全确定你的意思,但是如果你想改变回调中需要保存的东西,要在before_save回调中进行修改,并且不要明确保存,因为你知道无论如何,该项目将被保存。

after_save中你最好不要改变任何东西并保存,因为这确实会再次触发回调,并导致无限循环。

虽然可以有条件地声明回调,但这也可以解决您的问题:

before_save :do_something, :unless => some_condition 

可以找到更多示例here

无论如何,如果这仍然不清楚,或者不完全符合您的情况:如果您提供更实际的示例,则更容易讨论这个问题。

答案 1 :(得分:0)

你的问题有点不清楚,http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html可能会有所帮助