after_save -- stack level too deep

Hi all,

I'm running into a brick wall trying to figure out my problem here. I
have a model that has a boolean property called "paid". I'd like to
add the following to my model:

def after_save
  self.amount == self.splits.sum(:amount) ? self.update_attribute
(:paid, true) : self.update_attribute(:paid, false)

The problem is, when I do this I get an error that my stack level is
too deep. If I throw this in with one of the model's validators it
works just fine, but that's not the right way to do this...

I don't see how I'm recursing here, so any help would be appreciated!


You should update by sql in after_save.

update_attribute saves the updated record, so after_save will be called again, hence the recursion.