kahou l. wrote in post #1033985: > car1.wheels << wheel2 > car2.wheels << wheel2 > > Note that car1 wheels STILL contains wheel2 when I reassign wheel2 to > car2. > I expect car1 doesn't have wheel2 anymore... > > I don't know why it doesn't get update automatically that car1 shouldn't > contains wheel2 anymore. Can anybody help me to solve this problem?
The reason this happens is because Rails does not provide inter-model change notification. Take the line: car2.wheels << wheel2 Only car2 and wheel2 are involved in this statement. There is no change notification system in Rails to send a message to car1 informing it that anything changed. Therefore car1 only knows about the last state change where it was actually involved. If you want car1 to "wake up" and update it's internal state then you must do that yourself by either fetching it again or forcing car1 to reload it's state from the database: car1.reload Using reload is typically not necessary in production code because the next request usually refetches the objects involved anyway. But, it can be useful in rare situations or when using the Rails console for exactly the sort of experimenting that you're doing now. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

