Forum: Ruby on Rails after_save -- stack level too deep

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Neal L (Guest)
on 2009-01-18 06:34
(Received via mailing list)
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)
end


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!

Thanks!
Billy H. (Guest)
on 2009-01-18 08:55
(Received via mailing list)
You should update by sql in after_save.

On Sun, Jan 18, 2009 at 12:34 PM, Neal L <removed_email_address@domain.invalid> 
wrote:

> end
>
--
TWRUG Blog:
http://blog.rubyonrails.org.tw

CFC on Rails:
http://zusocfc.blogspot.com

Only two surfaces of a box:
http://blog.pixnet.net/zusocfc
Colin L. (Guest)
on 2009-01-18 11:38
(Received via mailing list)
update_attribute saves the updated record, so after_save will be called
again, hence the recursion.
Colin
This topic is locked and can not be replied to.