It was a bug I ran into that @jlsherrill assisted me in fixing. The gist was that calling object.update! was just setting some (one in my case) of the lazy_accessor properties. Later calls would set them all, thus overriding intermediate changes that had been made to the few that had been previously fetched.