reparaste que se apagares este método a coisa faz exactamente o mesmo? com isto estás a actualizar o atributo picture, remove-lo da hash, e logo a seguir no proximo metodo, a actualizar os outros attributos todos

e tirando daqui o update_attributes (que era o que estava realmente a fazer coisas), voltas ao problema inicial de a foto não aparecer no proximo request em caso de erro no resto, que era toda a ideia deste metodo