我已经解决了这个问题
看起来他们更新了代码,如果找不到用户就会抛出错误,所以我必须 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 时,现在会收到内部服务器错误 500
日志显示
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey")
但是,如果我在 rails 终端中使用完全相同的详细信息并运行 client.sync_sso,它运行得非常好
仅供参考,我没有更改上述部分开始再次工作的端点,因此 /users/by-external/ 似乎仍然有效