Objects won't destroy when inside of a loop

I'm having a little trouble with this for some reason.

Can someone tell me why I can do this...

price = Price.find(5)
price.destroy

but not this...

product.prices.each do |p|
p.destroy
end

At the end of that latter piece of code, product.prices.size still
equals 2.
For the record, I do know about delete_all, there are some
conditionals in my actual code that decide if an object gets deleted
or not. I'm just trying to figure out why my objects aren't being
destroyed when inside a loop like that.

What's the database say after you do that? And what happens if you follow that up with a:

product.reload

I'd be really surprised if the database wasn't adjusted after you did that, but can see that product wouldn't know it's been updated as 'p' is local and not really tied to 'product'.

-philip

Yeah, sorry about this one. my product object must have been cached
inside of the console.

It was deleting the objects from the database and when the console
was reloaded, the values were correct.

Yeah, sorry about this one. my product object must have been cached
inside of the console.

It was deleting the objects from the database and when the console
was reloaded, the values were correct.

I think the same will happen within Rails/web as well. Try the
product.reload to see if that makes a difference.