단계별 배포 사용자의 메일을 비활성화하는 방법?

다음 게시물을 이어가는 토론입니다: Discourse의 다양한 사용자 상태 설명 (관리자 / модератор / 스태프 / 개발자 / 기타):

저는 Google Groups 가져오기를 포함하는 포럼을 운영하고 있습니다. 의도적으로 이 포럼은 해당 Google 그룹의 정적 아카이브로 기능할 것입니다. Google 그룹은 독립적으로 계속 운영되며, 포럼은 해당 그룹의 게시물을 정적 아카이브 데이터로만 포함하게 됩니다. 현재는 Google 가져오기 스크립트를 주기적으로 실행하여 이를 처리하고 있지만, 곧 수신 메일 구성을 설정하고 해당 카테고리를 Google 그룹 목록에 구독하도록 변경할 계획입니다.

저는 enabled staged users를 꺼두었습니다. 모든 사용자는 active=false 및 staged=true로 표시됩니다.

누군가 게시물에 답글을 달면 해당 사용자에게 이메일이 전송됩니다.

누군가 개인 메시지(PM)를 보내면 해당 사용자에게 이메일이 전송됩니다.

사용자의 staged 상태를 false로 변경하면 더 이상 개인 메시지를 받지 않지만, 자신의 메시지에 대한 답글 알림은 여전히 받습니다. 이는 합리적인 동작이며, 오늘 누군가가 묻던 것과 정확히 일치합니다. 그러나 이 사용자는 포럼에서 계정을 생성하지 않은 Google Groups 사용자에게 이메일을 보낼 권한이 없다고 믿고 있습니다.

가져오기 스크립트를 수정하거나, 모든 active=false 사용자를 자동으로 staged=false로 설정하는 플러그인을 만들어 해결할 수 있을까요? 아니면 아카이브 카테고리를 감시(watch)할 수 없도록 설정할 수 있을까요? (아마도 플러그인을 통해?)

참고로, staged 사용자는 다음과 같이 처리되어야 합니다:

How to disable mail for staged users?에서 이어지는 토론입니다.

스테이지된 사용자에게 이메일을 보내지 않는 방법을 찾지 못해, 다음과 같이 처리할 예정입니다.

def no_mail_for_staged_users
  staged=User.where(staged: true)
  staged.all.each do |user|
    o=UserOption.find_by(user_id: user.id)
    o.email_level = 2
    o.email_messages_level = 2
    o.email_digests = false
    o.save
  end
end

그리고 mbox 스크립트를 수정하여, 해당 스크립트가 생성하는 스테이지된 사용자에게도 이메일을 유사하게 비활성화할 것입니다.

더 좋은 아이디어가 있으신 분이라면 의견을 듣고 싶습니다.

최신 버전을 사용 중이신가요? 지난 1~2주 사이에 스테이징된 사용자가 이메일을 받는 것과 관련된 버그를 수정했습니다.

좋겠습니다. 월요일에 확인해서 사용자 옵션 변경 사항을 되돌릴 수 있는지 살펴보겠습니다.

이것에 대한 플러그인이 있나요?

이것은 매우 오래된 주제이며, 이 글을 작성했을 당시 제가 하던 작업은 더 이상 불가능합니다.

사용자를 가져오던 스크립트에 해당 함수를 추가한 것 같습니다. 만약 특정 이유로 인해 그런 동작이 필요하다면, 이를 수행하기 위해 플러그인이 필요할 가능성이 큽니다. 원치 않는 이메일을 받는 스테이징된 사용자가 생성되는 상황이 무엇인지 설명해 주세요. 해당 동작을 수행하는 부분을 제가 포함시킨 스크립트처럼 실행되도록 업데이트해야 할 가능성이 높습니다. 이를 위해 맞춤형 플러그이가 필요하다면 Marketplace 게시판에 게시하거나 저에게 직접 연락해 주세요.