그룹 가입 시 사용자를 TL2로 승격하는 것 - 사후 처리 가능?

기존 그룹을 수정하여 멤버가 추가될 때 자동으로 부여되는 신뢰 수준 값을 2로 설정했습니다. 이 그룹에 추가되는 모든 멤버가 신뢰 수준 2로 업그레이드되도록 하려는 것이죠:

하지만 기존 그룹 멤버들이 모두 신뢰 수준 2로 사후 적용되지 않습니다 :confused:

이를 강제할 수 있는 방법이 있을까요?

아니면 그룹의 모든 멤버를 사후에 신뢰 수준 2로 업그레이드하는 방법이 있을까요? :thinking:

:warning: 이 솔루션은 고급 수준입니다. Rails 명령은 서버에 대한 SSH 접근 권한이 있을 때만 실행할 수 있으며, 자신이 하는 일에 대해 확신이 없다면 피해야 합니다. 어떤 경우든 반드시 먼저 백업을 수행하세요.


Richie님, 안녕하세요 :slight_smile:

다음과 유사한 rails 스크립트를 사용할 수 있습니다:

rails 콘솔에서 이렇게 하면 됩니다:

target_group = Group.find_by_name("test")
users = User.joins(:group_users).where(group_users:{group_id: target_group.id})
users.each do |u|
  u.trust_level = 2
  u.save
end

Delete all users not in a specific group - #2 by nathank 을 알려주신 @nathank님께 감사드립니다 :slight_smile:

Canapin님 감사합니다

rails 콘솔에 대해 전혀 익숙하지 않지만, 여기에 올려주신 내용을 실행해 보니 지금은 END에 멈춰서 커서가 깜빡이고 있습니다:

이 변경 사항을 어떻게 커밋해야 하나요? :thinking:

(아직 TL2로 승급되지 않았습니다)

아니요, 그것은 스크립트 실행에 영향을 미치지 않는 출력일 뿐입니다. q 키를 눌러 나가는 것이 가능할 것입니다.

또는 이것을 사용할 수도 있습니다:
https://stackoverflow.com/a/4678777

Group.find_by_name("test") 부분과 관련이 있을 수 있습니다. 실제 그룹 이름인지, 슬러그(slug)를 받는지는 모르겠습니다. :person_shrugging:


또한, rails 명령을 사용하는 것은 상당히 고급 수준이며, 이러한 작업을 수행하기 전에 백업을 만들어야 한다는 점을 언급했어야 했습니다. 죄송합니다.

음, 이상한 일이 발생했습니다.

이 rails 스크립트를 실행하기 전에 TL1이었던 사용자를 확인해 보면, 이제 TL2로 변경되어 있습니다 (정말 감사합니다!).

하지만, TL2 사용자 그룹을 보면 그룹 내 총 사용자 수가 증가하지 않았습니다 :thinking:

마찬가지로, 방금 TL2로 승급된 사용자 중 한 명을 검색하면, TL2 그룹의 검색 결과에 나타나지 않습니다:

:thinking:

또한, 해당 사용자는 TL2 배지를 획득하지 못했습니다:

:thinking:

그룹은 Sidekiq 작업 중에 업데이트됩니다.

해당 작업은 EnsureDbConsistency이며, Sidekiq를 통해 트리거할 수 있습니다(방법을 알고 있다면). 몇 시간만 기다려도 그룹이 자동으로 업데이트됩니다. :slight_smile:

여기서 방법을 찾았습니다:

:slight_smile:

정말 훌륭해요, 감사합니다!

본인이 해결될 때까지 인내심을 갖고 기다릴게요 :blush:

@Canapin 님, 시간 내주셔서 감사합니다 - 그리고 그 해결책 덕분에 - 이걸 수동으로 하느라 쓸데없이 낭비할 시간을 엄청나게 절약해 주셨어요 :scream:

천만에요.

우리가 정확히 무엇을 하고 있는지 모르면 문제가 생길 수 있으므로, 적절한 경고 없이 rails 명령어를 너무 서둘러 제안한 것 같습니다. 제 게시물에 좀 더 눈에 띄는 경고를 추가할게요 :slight_smile:

이 레일스 태스크가 모든 TL4와 TL3 사용자를 TL2로 강등시킨 것 같습니다 :thinking:

EnsureDbConsistency 태스크가 밤사이 자동으로 모두 수정해 주기를 바랍니다 :blush:

그렇습니다. TL3 사용자는 여전히 기준을 충족하는 경우 재승진됩니다.

TL4는 수동으로 승진 처리해야 합니다.

이를 피하려면 각 사용자를 해당 문장으로 평가하여 현재 TL2 미만인 경우에만 승진 처리해야 합니다.

TL4 사용자가 특정 그룹의 멤버이기도 한 경우, 이를 활용해 일괄 승진 처리할 수 있습니다.

좋은 정보 감사합니다, @Stephen. 지금 바로 처리하겠습니다 :slight_smile:

오늘 아침에는 모든 게 순조로워 보여요 :blush:

다시 한번 @Canapin님과 @Stephen님께 감사드립니다 :wave: