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 <morto...@gmail.com <javascript:>> 
> 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 rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/a98cd573-23b3-4ec7-b7a9-a6a7e85e3035%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to