Make sure to update the attributes of the user on update

It looks like you did all the hard/confusing stuff.  The last piece you were missing was calling `update_attributes`.  This code works for me and allows me to add multiple cats / remove them / etc.

Cheers,
Ken