기존 그룹을 수정하여 멤버가 추가될 때 자동으로 부여되는 신뢰 수준 값을 2로 설정했습니다. 이 그룹에 추가되는 모든 멤버가 신뢰 수준 2로 업그레이드되도록 하려는 것이죠:
하지만 기존 그룹 멤버들이 모두 신뢰 수준 2로 사후 적용되지 않습니다 ![]()
이를 강제할 수 있는 방법이 있을까요?
아니면 그룹의 모든 멤버를 사후에 신뢰 수준 2로 업그레이드하는 방법이 있을까요? ![]()
이 솔루션은 고급 수준입니다. Rails 명령은 서버에 대한 SSH 접근 권한이 있을 때만 실행할 수 있으며, 자신이 하는 일에 대해 확신이 없다면 피해야 합니다. 어떤 경우든 반드시 먼저 백업을 수행하세요.
Richie님, 안녕하세요 ![]()
다음과 유사한 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님께 감사드립니다 ![]()
아니요, 그것은 스크립트 실행에 영향을 미치지 않는 출력일 뿐입니다. q 키를 눌러 나가는 것이 가능할 것입니다.
또는 이것을 사용할 수도 있습니다:
https://stackoverflow.com/a/4678777
Group.find_by_name("test") 부분과 관련이 있을 수 있습니다. 실제 그룹 이름인지, 슬러그(slug)를 받는지는 모르겠습니다. ![]()
또한, rails 명령을 사용하는 것은 상당히 고급 수준이며, 이러한 작업을 수행하기 전에 백업을 만들어야 한다는 점을 언급했어야 했습니다. 죄송합니다.
그룹은 Sidekiq 작업 중에 업데이트됩니다.
해당 작업은 EnsureDbConsistency이며, Sidekiq를 통해 트리거할 수 있습니다(방법을 알고 있다면). 몇 시간만 기다려도 그룹이 자동으로 업데이트됩니다. ![]()
여기서 방법을 찾았습니다:
![]()
정말 훌륭해요, 감사합니다!
본인이 해결될 때까지 인내심을 갖고 기다릴게요 ![]()
@Canapin 님, 시간 내주셔서 감사합니다 - 그리고 그 해결책 덕분에 - 이걸 수동으로 하느라 쓸데없이 낭비할 시간을 엄청나게 절약해 주셨어요 ![]()
천만에요.
우리가 정확히 무엇을 하고 있는지 모르면 문제가 생길 수 있으므로, 적절한 경고 없이 rails 명령어를 너무 서둘러 제안한 것 같습니다. 제 게시물에 좀 더 눈에 띄는 경고를 추가할게요 ![]()
이 레일스 태스크가 모든 TL4와 TL3 사용자를 TL2로 강등시킨 것 같습니다 ![]()
EnsureDbConsistency 태스크가 밤사이 자동으로 모두 수정해 주기를 바랍니다 ![]()
그렇습니다. TL3 사용자는 여전히 기준을 충족하는 경우 재승진됩니다.
TL4는 수동으로 승진 처리해야 합니다.
이를 피하려면 각 사용자를 해당 문장으로 평가하여 현재 TL2 미만인 경우에만 승진 처리해야 합니다.
TL4 사용자가 특정 그룹의 멤버이기도 한 경우, 이를 활용해 일괄 승진 처리할 수 있습니다.
좋은 정보 감사합니다, @Stephen. 지금 바로 처리하겠습니다 ![]()
오늘 아침에는 모든 게 순조로워 보여요 ![]()
다시 한번 @Canapin님과 @Stephen님께 감사드립니다 ![]()