On Aug 22, 2013, at 11:56 AM, Gabriel Sobrinho wrote: > Hey guys, > > What do you think about tracking habtm changes? > > Apparently we can't do that because when you change a habtm association it is > changed immediately on database instead of waiting the save call (not sure > why and the problem may not be because of that). > > Current behaviour: > > profile.roles_ids > => [] > > profile.update_attributes(:name => nil, :roles_ids => [...]) > => false > > profile.changes > { "name" => ['Admin', nil] } > > > Expected behaviour: > > profile.roles_ids > => [] > > profile.update_attributes(:name => nil, :roles_ids => [...]) > => false > > profile.changes > { "name" => ['Admin', nil], :roles_ids => [[], [...]] } > > > > Giving some problem context, I have an application that need to audit almost > every change and I can track everything using the changes method but habtm > changes. > > We can write a solution like storing the initial state of roles_ids in an > after_initialize callback on the model and comparing it on a after_save but I > was thinking in a more "native" solution. > > > What do you think?
Some quick thoughts: * using the _ids= method on has_many doesn't show up in changes either * this could get really expensive if you have a lot of rows on the other end of the HABTM, since you cache the complete list of IDs in memory --Matt Jones -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-core+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-core@googlegroups.com. Visit this group at http://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/groups/opt_out.