Não estou a peceber bem porque tu no save_user estás a atribuir o resultado daquele && à variável succeeded e aqui estás a devolver a succeeded. E se este método devolve sempre true porque não fazes no save_user algo como

    def save_user
        save_picture
        save_attributes
   end

e depois no save_attributes metes o resultado na variável succeded? Provavelmente sou eu que não estou a perceber bem também a coisa.