Thanks for the reply. It still seems to be a systemic integrity problem. But the additional info on another work around is welcome.
Phil On Sunday, August 17, 2014 9:17:10 PM UTC-7, tamouse wrote: > > > > > On Sun, Aug 17, 2014 at 8:57 PM, Phil <[email protected] <javascript:>> > wrote: > >> >> I hate to reply to myself, but I narrowed it down to Rails caching by >> DEFAULT of model queries. It can be worked around by passing 'true', like >> this: >> >> >> tc.name = "something different" >> >> tc.save! >> >> tp.test_children.map {|x| x.name }.to_sentence # => "test1, test2, >> test3, and test4" *WRONG* >> >> tp.test_children(true).map {|x| x.name }.to_sentence # => "test1, test2, >> test3, and something different" *CORRECT* >> >> >> Another workaround is to just stop using has_many and such in favor of >> manual functions, a la: >> >> def test_children >> >> return TestChild.where(["test_parent_id = ?", self.id]) >> >> end >> >> >> Is there a way to turn this sort of caching off globally? (Other caching >> is fine, I don't want to turn all caching off.) >> >> >> BTW- It is a bit mind blowing that this is turned on by default. >> Possible data corruption shouldn't ever be preferred by default over >> (possible) speed gains. I'd still categorize this as a serious bug, at >> least as a configuration default. >> >> > > Try tp.reload after you make a change in the collection the way you have > been. If you had been building your children entries as: > > tp.children.create(name: "test1") > > tp would be fully cognizant of all it's children. > -- 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/6ce518de-d8b8-4b54-8cb5-176e8055daa2%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

