If I add an after_save callback to an ActiveRecord model, and on that callback I use update_attribute to change the object, the callback is called again, and so a ‘stack overflow’ occurs (hehe, couldn’t resist).
Is it possible to avoid this behavior, maybe disabling the callback during it’s execution? Or is there another approach?
Thanks!
One workaround is to set a variable in the class, and check its value in the after_save.
This way, it’ll only attempt to save twice. This will likely hit your database twice, which may or may not be desirable.
I have a vague feeling that there’s something built in, but this is a fairly foolproof way to prevent a specific point of recursion in just about any application. I would also recommend looking at the code again, as it’s likely that whatever you’re doing in the after_save should be done in before_save. There are times that this isn’t true, but they’re fairly rare.