Not a huge fan of this either. Usually in the cases of join tables, with this technique of persisting objects, I have seen the usage of wiping the relevant records from the database useful. For example, outside the `foreach` run a `$this->clearSkills($user_id)` to remove all skill tags from the join table then proceed to insert the ones currently attached to the user.

This also does not account for someone removing a skill as written, I don't think.