안녕하세요 여러분,
커스텀 타이틀을 갖춘 랭킹 시스템을 설정했습니다. 하지만 아시다시피, Discourse에는 모든 신규 사용자에게 기본 타이틀을 할당하는 내장 기능이 없습니다. 그래서 다음과 같은 우회 방법을 만들었습니다:
신규 멤버는 그룹 1 에 속합니다.
활성 멤버는 그룹 2 에 속합니다.
그리고 이어서…
사용한 방법은 다음과 같습니다:
cd /var/discourse
./launcher enter app
rails c
User.where(trust_level: 0).update_all(title: "عضو جديد")
User.where(trust_level: 1).update_all(title: "عضو جديد")
User.where(trust_level: 2).update_all(title: "عضو مشارك")
User.where(trust_level: 3).update_all(title: "عضو مبدع")
문제점
새로운 사용자가 가입할 때마다 이 명령어를 수동으로 실행해야 합니다. 오늘 스크립트를 실행해도 내일 새로운 멤버가 게시물을 올리면 타이틀이 자동으로 부여되지 않으므로, 서버에 로그인하여 명령어를 다시 실행해야 합니다.
Ruby 스크립트로 자동화하고 crontab 을 통해 호출하려고 했지만, 오류가 발생합니다.
ChatGPT에게 질문했는데, 다음과 같이 답변을 받았습니다:
“Discourse 환경 밖에서 Ruby로 스크립트를 직접 실행할 때 User 모델이 로드되지 않습니다.”
문제는 Discourse 파일 안에 적절한 config/environment 설정이 없다는 것입니다.
추가했지만 작동하지 않았습니다.
제 질문
crontab을 사용하지 않고 이를 자동화할 방법이 있을까요? 아니면 매번 수동으로 Rails 콘솔에 진입하지 않고 사용자 타이틀을 업데이트하는 스크립트를 올바르게 실행하는 방법은 무엇일까요?
미리 감사합니다!
Canapin
(Coin-coin le Canapin)
3월 20, 2025, 7:31오후
4
Discourse Automation 과 Create custom Automations 참고하여 커스텀 자동화를 만들어서 가능할 수도 있지만, 어떻게 작동하는지 잘 모르겠습니다.
User Event와 User Promoted Event 트리거를 사용하는 사용자 정의 자동화 스크립트로 이 작업을 수행할 수 있습니다. 새 사용자가 생성되면(User Event) 또는 신뢰 수준이 변경되면(User Promoted Event) 스크립트를 트리거하여 해당 사용자의 신뢰 수준에 따라 직함을 자동으로 할당할 수 있습니다.
고마워요 @jahan_gagan ! 이 스크립트를 만드는 데 도움이 될 수 있을까요?
와! 멋진 해킹이네요!
신뢰 수준 같은 자동화 그룹의 일부 그룹 설정을 사용할 수 없다는 점은 좀 아쉬운 것 같습니다. 사용자가 속한 신뢰 수준 그룹에 따라 사용자 제목을 설정할 수 있어야 하지만, 현재는 그렇게 할 수 없습니다.
배지 시스템을 활용해서 이 작업을 수행해 볼 수 있습니다. 원하는 신뢰 수준에 도달했을 때 지급되는 배지를 만들고, 그런 다음 "배지를 제목으로 사용하도록 허용"을 설정하세요.
이후 매일 실행되어 사용자의 제목과 플레어를 업데이트하는 “배지를 통한 사용자 그룹 멤버십” 스크립트를 사용하여 자동화를 만들 수 있습니다.
이 정보를 게시물/사용자 카드에 추가하는 테마 컴포넌트를 사용하는 것이 더 유연하지 않을까요? 이렇게 하면 사용자는 여전히 제목 필드를 의도된 용도(배지, 그룹 식별자, 추가하고 싶은 맞춤형 항목 등)로 활용할 수 있으며, 테마 컴포넌트를 통해 추가되는 정보는 사용자가 수정하거나 제거할 수 없게 됩니다.
안녕하세요,
배지 시스템 자동화를 사용하여 이를 구현하려고 하 tetapi 한 가지 제한 사항에 부딪혔습니다.
user_group_membership_through_badge 스크립트를 실행하려면 그룹을 지정해야 합니다. 하지만 저는 이미 기본 시스템 그룹인 Trust Level 1, 2, 3, 4 를 사용하고 있습니다. 이 그룹들은 내장되어 있어 자동화 도구에서 선택할 수 없습니다.
이 자동화를 위해 새로운 그룹을 만들면, 현재 멤버들이 자동으로 이관되지 않을까 걱정됩니다. 그러면 사용자의 신뢰 등급에 대한 정확한 매핑을 잃게 될 것입니다.
그룹 필드를 비워두면 발생하는 오류를 보여주는 스크린샷입니다:
그룹을 지정하지 않고 배지-제목 업데이트를 적용할 방법이 있을까요?
아니면, 이 자동화 내에서 Trust Level 그룹 을 직접 대상으로 지정할 수 있는 우회 방법이 있을까요?
@xkhalid 간단한 플러그인(이것도 제 첫 작품입니다!)을 만들어 봤습니다:
새 사용자에게 제목을 부여합니다.
신뢰도 수준(Trust Level)에 따라 제목을 변경합니다. 예: TL1 → TL2: 사용자는 이제 TL1 제목 대신 TL2 제목을 받게 됩니다.
12시간마다 사용자 제목을 업데이트합니다(주기를 설정할 수 있도록 할 계획입니다)
Contribute to NateDhaliwal/add-title-based-on-trust-level development by creating an account on GitHub.
모든 제목은 설정을 통해 구성할 수 있습니다 .
감사합니다!
app.yml에 다음 내용을 추가한 후
- git clone https://github.com/NateDhaliwal/add-title-based-on-trust-level.git
다시 빌드했을 때 502 Bad Gateway 오류가 발생했습니다. 해결 방법이 있을까요?
지금은 app.yml에서 해당 내용을 제거했고, 지금은 모든 것이 정상적으로 작동하고 있습니다.
음, 이상하네. 기억이 맞다면 재빌드 후에 그 오류가 가끔 나타날 수 있거든. 그냥 기다리면 해결되거나(또는 재빌드하면) 사라져.
네, 알아요 — 하지만 이 문제는 Git 저장소를 추가하고 다시 빌드한 후에만 발생했어요. 이런 오류가 떴거든요.
그래도 나중에 다시 시도해 볼게요.
이 문제는 어때요? 관련이 있을 수도 있나요?
다시 한번 확인해 보겠습니다. 알려주셔서 감사합니다.
@xkhalid 지금 한번 시도해 볼 수 있을까요? 방금 업데이트했어요.
감사합니다! 이제 작동합니다.
하지만 모든 사용자에게 반영되지는 않습니다. 예를 들어, 이 사용자는 신뢰 수준 1이고 신규 사용자인데, 제목이 할당되지 않았습니다.
시간이 좀 걸리는 건가요?
@xkhalid 수정을 push했습니다. 이제 제대로 동작하는지 알려주세요.
감사합니다!
@NateDhaliwal 님의 플러그인에 감사드립니다!
Contribute to NateDhaliwal/add-title-based-on-trust-level development by creating an account on GitHub.
정말 유용했으며, 제목이 12시간마다 업데이트되었습니다.
joo
(slower)
8월 5, 2025, 1:38오후
20
안녕하세요, 훌륭한 플러그인을 만들어 주셔서 감사합니다!
조금 더 복잡한 기능이 필요합니다.
그룹 소속(예: 그룹 A 또는 그룹 B)과 신뢰 수준(예: TL2, TL3 등)의 조합 을 기반으로 사용자 칭호를 자동으로 설정하고 싶습니다. 예를 들어, 그룹 A에 속해 있고 신뢰 수준이 TL2인 사용자는 "A - TL2"라는 칭호를 받는 식입니다.
플러그인에 이 기능을 추가할 수 있을까요? 아니면 구현 방법에 대한 조언이 있을까요?
저는 코딩 경험이 없어서 제안이나 도움이 정말로 감사하겠습니다.
감사합니다!
@joo 이 그룹들은 사용자의 기본 그룹인가요?
joo
(slower)
8월 5, 2025, 3:04오후
22
네, 사용자의 기본 그룹을 기반으로 제목을 결정하려고 합니다.