Изменить язык интерфейса для множества пользователей через SQL-запрос?

Мне бы хотелось узнать, не сможет ли кто-нибудь помочь мне с запросом в службу поддержки.

Мне нужно обновить настройки всех наших пользователей, у которых в настоящее время установлен интерфейс на языке English (US), и переключить их на English (UK).

Есть ли у меня возможность составить запрос в «Исследователе данных», чтобы выполнить SQL-запрос UPDATE с условием WHERE, который затронет только пользователей с языком English (US)?

Для справки: мы недавно потратили много времени на обновление всех текстов сайта на языке English (UK), и в ходе тестирования выяснилось, что все пользователи, зарегистрировавшиеся на нашей платформе более года назад, по умолчанию получали старое значение настройки сайта — English (US), а не English (UK). Обновить необходимо примерно 15 000 пользователей.

Вы не можете выполнять запросы UPDATE через плагин Data Explorer, так как он работает только в режиме чтения.

Для массовых обновлений, подобных этому, используйте консоль Rails:

User.where(locale: 'en').update_all(locale: 'en_GB')

Дополнительные примеры массового обновления предпочтений пользователей см. по ссылке:

Если я запущу это в Data Explorer:

SELECT
  u.locale,
  COUNT(*) AS user_count
FROM users u
WHERE u.active = TRUE
  AND u.locale IN ('en', 'en_GB')
GROUP BY u.locale
ORDER BY user_count DESC, u.locale

Получу:

locale user_count
en_GB 19479
en 16014

Мне нужно ОБНОВИТЬ 16 014 пользователей с en на en_GB.

Но я не настолько смел, чтобы выполнять запрос на обновление в продакшене :blush:

Фух :sweat_smile:

Отлично, спасибо! :person_bowing:

Спасибо @jahan_gagan

Сначала я сделал резервную копию базы данных :sweat_smile:

Затем я выполнил следующее:

Это сработало идеально:

Загрузка производственного окружения (Rails 8.0.4)
discourse(prod)> User.where(locale: 'en').update_all(locale: 'en_GB')
=> 16016

И теперь мой запрос в Data Explorer возвращает:

locale user_count
en_GB 35493

Спасибо :clap: