hey folks,
I migrated to 2.1 from 2.0.2, turned on the partial_update
functionality, and specs started to fail. It seems that calling
'save_without_validation!' on an existing object does not trigger the
save_with_dirty! method.
The path is a bit convoluted, but when save_without_validation! is
called... it calls:
ActiveRecord::Base#update method -> then is overloaded by
ActiveRecord::Dirty#update_with_dirty, which does not clear out the
changed attributes.
adding a patch like the one pasted at the bottom of this msg fixes the
issue.
I'm not sure if this is the right fix or not. It seems that calling
save_without_validation! should still call the save_with_dirty!
method, just like save! calls the save_with_dirty! method. The fact
that it calls the update_with_dirty might just be 'luck'?
Thanks,
Adam
**PATCH**
# HACK: why does this not work if I chain it from within the module
Dirty?
# It doesn't seem to pick it up if I use update_with_dirty_with_patch
# and *_without_patch.... but this works as it is patched in after
# ActiveRecord::Base has been extended with ActiveRecord::Dirty
module ActiveRecord
class Base
def update_with_patch
update_without_patch
#FIX: make sure the changed attributes are cleared out after a
successful update!!!
changed_attributes.clear rescue nil
end
alias_method_chain :update, :patch
end
end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---