Есть определенные поля пользователя, которые я скрыл с помощью CSS.
Однако их все еще можно обновить через консоль Rails, API или инструменты разработчика.
Как убедиться, что никто не сможет обновить эти поля (например, веб-сайт или местоположение) с помощью вышеуказанных методов?
Напишите плагин для изменения API (то есть переопределите контроллеры, модель или связанные функции библиотеки).
Кстати, это крайне маловероятно: доступ к консоли Rails есть только у администраторов.
Если вы скрываете отображение этих значений, какое имеет значение, заполнят ли их пользователи? Для этого потребовались бы усилия одного пользователя, чтобы добавить местоположение, и усилия другого — чтобы зайти в профиль и увидеть, что было введено.
Если не форкать Discourse, чтобы удалить эти поля из модели, то практически нет способа помешать кому-то с доступом к консоли Rails вводить данные в них.
Вы можете написать плагин, который периодически запускался бы и устанавливал любые нужные вам поля в nil. Либо вы можете использовать хук, вызываемый при обновлении профиля пользователя, который обнулял бы эти поля. Посмотрите плагины на GitHub - discourse/all-the-plugins · GitHub, которые используют “add_model_callback” и “:before_save”, чтобы найти примеры. После этого вы примените это к UserProfile.
Спасибо за ваши ответы, с их помощью я заставлю это работать. И я согласен, что блокировать до такой степени — это перебор, но такова задача.