데이터베이스 쿼리로 다수의 사용자 인터페이스 언어를 변경할 수 있나요?

지원 요청에 대해 도움을 주실 분이 계실지 궁금합니다.

현재 인터페이스 언어가 English (US)로 설정된 모든 사용자의 설정을 English (UK)으로 변경해야 합니다.

English (US)로 설정된 사용자만 대상이 되도록 where 절을 포함하여 SQL UPDATE 쿼리를 실행할 수 있는 데이터 탐색기 쿼리를 작성할 수 있을까요?

참고로, 최근 우리는 Site texts를 English (UK) 언어로 업데이트하는 데 많은 시간을 보냈습니다. 테스트 과정에서 플랫폼 가입 후 1년 이상 된 사용자는 English (UK) 대신 이전 기본 사이트 설정인 English (US)로 기본 설정되어 있음을 발견했으며, 약 15,000명의 사용자가 업데이트가 필요합니다.

Data Explorer 플러그인은 읽기 전용으로만 작동하기 때문에 UPDATE 쿼리를 실행할 수 없습니다.

이처럼 대량 업데이트를 수행하려면 대신 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

en 로케일을 가진 16,014명의 사용자를 en_GB로 UPDATE해야 합니다.

하지만 프로덕션 환경에서 업데이트 쿼리를 실행할 만큼 용감하지는 않네요 :blush:

역시 :sweat_smile:

훌륭합니다, 감사합니다! :person_bowing:

감사합니다 @jahan_gagan

먼저 DB 백업을 진행했습니다 :sweat_smile:

그 후 다음 코드를 실행했습니다:

완벽하게 작동했습니다:

Loading production environment (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: