Get /users/by-external/ выдает ошибку URL Not Found после обновления

Итак, я обновлял свой форум с версии 1.6 до 3.1, что потребовало переноса на новый сервер, восстановления резервной копии и повторного подключения всех компонентов.

Мы используем SSO для входа как на старом, так и на новом сайте, и это всё ещё работает.

Однако теперь Discourse, похоже, выдает ошибки в некоторых случайных местах, что вызывает проблемы с созданием учетных записей с веб-сайта через API.
Ранее мы использовали ruby-гем discourse_api версии 0.10.1, который я обновил до версии 0.48.1.

Ошибка возникает на строке:
DiscourseApiService.new.user(self)

которая вызывает:
resp = client.get("/users/by-external/#{user.id}")

и приводит к ошибке:
{"errors"=>["The requested URL or resource could not be found."], "error_type"=>"not_found"}

Раньше это работало без проблем, но теперь по какой-то причине URL не находится.

Я попытался откатить gem discourse_api обратно до версии 0.10.1, на которой мы работали ранее. На этот раз этап client.get проходит успешно, но затем возникает ошибка на следующем вызове с тем же сообщением:

client.sync_sso(

{"errors"=>["The requested URL or resource could not be found."], "error_type"=>"not_found"}

Точка доступа в какой-то момент изменилась на /u/by-external/{external_id}.json. Для доступа к этой точке доступа требуются API-ключ и имя пользователя.

Мне действительно удалось это решить.

Кажется, они обновили код так, чтобы теперь выбрасывалась ошибка, если пользователь не найден, поэтому мне пришлось использовать rescue вместо проверки на nil?

begin
    resp = client.get("/users/by-external/#{user.id}")
rescue DiscourseApi::NotFoundError => error
    puts error.response.body['errors'].first
    sync_user(user)
else
    resp.response.env.body['user']
end

Также формат ответа изменился с
resp['body']['user']
на
resp.response.env.body['user']

Моя последняя проблема заключается в том, что при вызове client.sync_sso теперь возникает Internal server error 500.

В логах указано:
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey"

Однако, если я использую точно такие же данные в терминале Rails и запускаю client.sync_sso, всё работает идеально.

Кстати, я не менял конечную точку для вышеупомянутых частей, чтобы они снова заработали, поэтому кажется, что /users/by-external/ всё ещё действителен.