I get the same error if I use the \Auth::update_user() method.
If I simply change the group_id but don't select any roles, the save works fine but to change roles I have to submit the form to change the group_id, then go back into the edit view and change the roles.
I've amended the function to \Model\Auth_Role but still getting the same result.
I can understand how ORM would struggle with \Auth\Model but surely this would happen all the time. I'm finding that it will work if I reload the edit view after saving the group_id change but if I change the group and role in the same form submit then it throws the error.
Scratch that previous comment. Although changing \Model\Auth_Role didn't seem to initially to fix the issue. What I found on further investigation was the javascript behind the role_id form select was setting the option values to the array numerical index of the returned json object, not the actual role_id. So ORM must have been failing to find an association with role_id = 0.