В базе данных моего приложения есть таблица members, где я храню специфичную для приложения информацию о части пользователей. Один из столбцов — discourse_user_id. Я хочу отобразить ссылку на профиль пользователя в Discourse. Возможно ли это сделать, используя только его ID?
Я не храню discourse_user_name, так как пользователь может изменить его, и тогда мне придётся беспокоиться о синхронизации данных.
Единственный способ, который я могу придумать, — сделать API-запрос к /admin/users/<user-id>.json, чтобы получить имя пользователя, но это потребует большого количества запросов на странице индекса, где я отображаю список пользователей со ссылками на их профили.
Единственное другое решение, которое приходит в голову, — создать плагин и добавить маршрут, но это кажется слишком трудозатратным для задачи, о которой, вероятно, уже спрашивали. Поэтому я хотел уточнить, есть ли уже какое-то готовое решение?
Одна из идей — добавить внешний ID в запись пользователя, а затем использовать маршрут /by-external/:external_id. Другой вариант — использовать вебхук для уведомления вашей внешней базы данных при изменении имени пользователя. Третий — просто запретить изменение имён пользователей. При беглом просмотре файла discourse/config/routes.rb я не нашёл маршрута, который использует user_id.
Спасибо @pfaffman, это очень полезно. Я думаю, что использование внешнего ID было бы идеальным решением, так как это также решает ещё одну проблему — ссылку в обратном направлении.
Однако, изучая документацию по API и используя REST-клиент, я не вижу, как обновить это поле. Могу ли я использовать его без включения SSO? (И даже если я включу SSO, смогу ли я обновлять его программно?)