Moin
5월 24, 2026, 10:45오후
1
“Thanks for Contributing” Popup in Posts Appearing Even After Limit Passed? 에서 이어서 논의합니다:
이 변경 사항에 대해 질문이 있습니다. 테스트할 때 어떻게 작동해야 하는지 놓치고 있거나 오해하고 있는 것 같습니다.
제 기대치는 educate_until_posts 사이트 설정 값으로 제어되는 초기 몇 개의 게시물에 교육 배너가 표시되어야 한다는 것입니다. 기본값은 2입니다.
테스트를 위해 더 안전을 기하기 위해 이 값을 5로 변경했습니다. 그러나 제 테스트 사용자는 교육 메시지를 단 한 번만 확인했습니다.
또한 코드를 확인해 보았습니다:
end
# Determines whether to show the user education text
def check_education_message
return if @topic&.private_message?
return if UserHistory.exists_for_user?(@user, :notified_about_composer_education)
education_key = creating_topic? ? "education.new-topic" : "education.new-reply"
count = @user.topic_count + @user.post_count
if count < SiteSetting.educate_until_posts
UserHistory.create!(
action: UserHistory.actions[:notified_about_composer_education],
target_user_id: @user.id,
)
return(
{
id: "education",
templateName: "education",
wait_for_typing: true,
제 이해로는, 이 메서드는 먼저 개인 메시지와 교육 메시지가 이미 표시되었음을 나타내는 기록이 이미 있는 사용자를 제외합니다. 이 부분은 이해가 됩니다.
이어서 사용자가 주제를 생성하는지 답글을 작성하는지를 판별하고 사용자의 총 게시물/주제 수를 계산합니다.
혼란스러운 부분은 다음 부분입니다. 총 게시물 수가 설정된 한도보다 낮으면, 교육 메시지가 다시 표시되지 않도록 방지하는 기록을 생성한 후 메시지를 표시합니다.
여기서 제가 놓치고 있는 것이 무엇일까요?
예를 들어, educate_until_posts가 기본값인 2로 남아 있는 경우, 사용자의 첫 두 게시물에 메시지가 표시될 것이라고 기대했습니다.
사용자가 첫 번째 게시물을 작성하기 시작합니다. 개인 메시지가 아니고, 기존 UserHistory 기록도 없으므로 메시지가 표시됩니다 - 이는 이해가 됩니다.
그런데 왜 바로 그 직후 UserHistory 기록이 생성되나요? 그러면 메시지가 다시는 표시되지 않게 되지 않나요?
더 유사한 구조를 기대했습니다:
count = @user.topic_count + @user.post_count
if count >= SiteSetting.educate_until_posts
UserHistory.create!(
action: UserHistory.actions[:notified_about_composer_education],
target_user_id: @user.id,
)
elsif count < SiteSetting.educate_until_posts
return (
하지만 이것이 실제로 문제라면, 해당 설정과 관련된 테스트가 실패했을 것이라고 생각합니다. PR이 병합되었으므로, 테스트는 실패하지 않은 것으로 보입니다.
여기서 제가 놓치고 있는 부분을 이해하는 데 도움을 주실 수 있을까요?
5개의 좋아요
와, 정말 작은 토끼굴(깊은 문제)이네요. 제 생각에 이 혼란은 설정 이름(educate_until_posts)의 업데이트가 누락되었기 때문에 정당하게 발생한 것 같습니다. 제 기억에 PR#400074 에서는 알림이 횟수와 관계없이 한 번만 표시되고 다시는 표시되지 않도록 의도된 것 같습니다.
따라서 이제 이 설정은 더 이상 *“첫 N개의 게시물에 대해 메시지를 표시한다”*는 의미가 아니라,
**“사용자의 게시물 수가 이미 이 임계값보다 적은 경우에만 교육 메시지를 표시하되, 그렇게 하더라도 정확히 한 번만 표시한다.”**는 의미가 되었습니다.
@Roman 이 설정의 문구를 업데이트해야 한다는 제 생각이 맞나요?
2개의 좋아요
Roman
(Roman Rizzi)
6월 3, 2026, 2:16오후
3
이 변경 사항의 주요 동기는 교육용 메시지가 반복해서 표시되는 것을 막기 위해서였습니다. 하지만 이 주제를 살펴본 결과, 메시지가 한 번만 표시되도록 하면 해당 설정이 사실상 무의미해지므로 제가 조금 과하게 간 것 같다는 생각이 듭니다.
다시 한 번 검토해서 더 좋은 절충점을 찾아보겠습니다. 결과를 알게 되면 여기에 업데이트하겠습니다.
4개의 좋아요
Roman
(Roman Rizzi)
6월 24, 2026, 2:34오후
5
어제 이 수정 사항을 병합했습니다:
main ← education_until_posts
merged 03:19PM - 23 Jun 26 UTC
Follow up to c84b8a25e6a32c01682ca42c7384e086f51227a3
Keep the composer educa… tion notice from reappearing while typing in the same session. Reset it when the composer is refreshed or the post is saved, without changing the backend educate_until_posts behavior.
educate_until_posts 임계값 이하에 있는 경우, 교육용 메시지는 입력을 시작할 때 한 번만 표시되며, 게시물을 작성하거나 페이지를 새로고침하지 않는 한 다시 표시되지 않습니다.
2개의 좋아요