changed_attributes is cleared unconditionally after save (and save!) attempts:
# Clear changed attributes after they are saved. def save_with_dirty(*args) #:nodoc: save_without_dirty(*args) ensure changed_attributes.clear end
I'd expect that to happen only if save succeeds. Which is the rationale?
-- fxn