약 60번의 반복 작업을 거친 끝에, Askbot과 함께 Rails 스크립트를 거의 작동하는 상태로 만들었습니다.
아래 스크립트는 – 주제 239와 태그 'tagtest’에 대해 – 올바른 주제 제목을 가진 예상되는 “새 주제” 알림을 생성하고, 관련 이메일을 생성합니다.
일부 요소는 비활성인 것 같습니다(message:와 display_username:이 어떤 출력에도 나타나지 않음) 하지만 거의 작동합니다.
가장 큰 문제는 이메일 헤더에 실제 주제 제목이 표시되지 않는다는 것입니다. " %{topic_title} "로 전송됩니다. topic_title은 Notification 메서드에 대해 유효한 필드가 아닌 것 같아, 이메일에 이를 포함시키는 데 필요한 최소 코드가 무엇인지 확실하지 않습니다. (Askbot은 점점 더 복잡한 이메일 메서드를 추가해 보았지만, 오류는 점점 더 많아졌습니다.)
누군가 그 세부 사항에 대해 도움을 주신다면, 제가 이것을 제대로 정리하는 법을 배울 때까지 버틸 수 있을 것입니다…!
topic_id = 239
Tag.where(name: 'tagtest').each do |tag|
TagUser.where(tag_id: tag.id, notification_level: TagUser.notification_levels[:watching_first_post]).each do |tag_user|
user = User.find(tag_user.user_id)
puts "Username: #{user.username}, ID: #{user.id}"
# Fetch the topic title
topic = Topic.find(topic_id)
topic_title = topic.title
# Create a notification for the topic
Notification.create!(
user_id: user.id,
notification_type: Notification.types[:watching_first_post],
topic_id: topic_id,
post_number: 1, # Assuming you want to notify about the first post of the topic
data: {
message: 'You have a new notification for a topic you are watching.',
display_username: 'system'
}.to_json
)
end
end
참고로, 기존 주제에 태그를 추가하면 해당 태그의 첫 번째 게시글을 보고 있는 모든 사용자에게 알림이 전송되어야 합니다.
저는 테스트 사이트(3108e3a6b6)에서 방금 테스트해 보았는데, 여전히 올바르게 작동하는 것으로 보입니다.
확인차 물어보는데, 관리자 설정에서 disable tags edit notifications(태그 편집 알림 비활성화) 설정을 변경해 본 적이 있나요? (카테고리 버전의 경우 disable category edit notifications(카테고리 편집 알림 비활성화) 설정을 확인해 주세요).
그 설정들이 존재했다는 걸 잊고 있었습니다. 제가 그것들을 비활성화했을 때, "관리자가 태그를 추가했거나 토픽의 카테고리를 변경했습니다"와 같은 알림만 생각하고 있었을 것 같아요 — Watching이나 WFP 알림 같은 동작은 고려하지 않았죠.
아직도 일관성 없는 부분이 있는 것 같습니다. 카테고리를 Watching하면 disable category edit modifications 설정이 무시되는 반면, WFP는 그렇지 않았거든요. 속죄로 더 철저하게 테스트해보고, 이 주제에 대해 언급했던 다른 몇 명에게 후속 조치를 하겠습니다.
(또한, @sam이 제 결론을 어느 정도 뒷받침해주었습니다 )
하지만 rails 스크립트와 씨름하며 더 많은 시간을 낭비하게 될 뻔한 저를 구해준 @JammyDodger에게 감사드립니다. 다음 단계는 소파를 팔아서 @pfaffman에게 도움을 청할 예정이었거든요.