For instance, on a before_save callback, the value from the association traversal is still the new value. It seems no matter how far back I go in the callback chain, that this is the case.
On Friday, 7 July 2017 14:12:31 UTC-4, Alex Morton wrote: > > Hmm, when you say re-read from the database here, this read is done within > the same transaction as the callback chain? Was just curious to see the new > value from the association traversal instead of the old one. > > On Friday, 7 July 2017 12:56:24 UTC-4, Colin Law wrote: >> >> On 7 July 2017 at 15:25, Alex Morton <[email protected]> wrote: >> > I have a model called Dataset which registers an after_save callback to >> do >> > some work when its name attribute has changed. This callback is >> manipulating >> > a DatasetLink model but the association between the two is through >> another >> > model called Attribute. >> > >> > The scenario I'm hoping to come to an explanation for is this: >> > Within the after_save callback, the immediate reference to the Dataset >> model >> > that's changing returns true for name_changed? and changed?. However, >> when >> > traversing the association to a DatasetLink record, the link's >> reference to >> > the dataset has the new value for the name but it doesn't register the >> > dataset as being changed nor the name being changed. It just has the >> new >> > name. >> >> Since traversing the associations probably means that the record will >> be re-read from the database it is correct that the changed flags are >> not set (for that in-memory record), as the value of name in the >> record in memory has not changed since it was read. >> >> Colin >> > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/108e75e4-081c-4b19-9609-952eb2035b65%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

