# Como \`educate\_until\_posts\` interage com as recentes mudanças em \`check\_education\_message\`?

**URL:** https://meta.discourse.org/t/how-does-educate-until-posts-interact-with-the-recent-changes-to-check-education-message/403727
**Category:** Bug
**Tags:** composer, fixed
**Created:** [24 Maio , 2026 22:45 UTC](https://meta.discourse.org/t/how-does-educate-until-posts-interact-with-the-recent-changes-to-check-education-message/403727 "2026-05-24T22:45:34Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [24 Maio , 2026 22:45 UTC](https://meta.discourse.org/t/how-does-educate-until-posts-interact-with-the-recent-changes-to-check-education-message/403727/1 "2026-05-24T22:45:35Z")

</div>

Continuando a discussão de [“Thanks for Contributing” Popup in Posts Appearing Even After Limit Passed?](https://meta.discourse.org/t/thanks-for-contributing-popup-in-posts-appearing-even-after-limit-passed/373048/24):

Tenho uma dúvida sobre essa alteração. Sinto que estou perdendo algo ou entendendo mal como isso deveria funcionar ao testar.

Minha expectativa é que o banner educacional apareça nas primeiras postagens, com a quantidade controlada pela configuração do site `educate_until_posts`. Por padrão, esse valor é 2.

 ![Screenshot_20260524_235123_Firefox](https://global.discourse-cdn.com/meta/original/4X/4/0/8/4089cf58b58ba03a384a65843808b17a7bf6fe70.jpeg)

Para os testes, mudei para 5 apenas para ter certeza extra. No entanto, meu usuário de teste viu a mensagem educacional apenas uma vez.

Também examinei o código:

> <https://github.com/discourse/discourse/blob/8f22f65795f0982dbcffd0ab4b4757ba178ad488/lib/composer_messages_finder.rb#L34>

Pelo que entendi, o método primeiro descarta mensagens privadas e usuários que já possuem um registro indicando que a mensagem educacional foi exibida. Essa parte faz sentido para mim.

Em seguida, ele determina se o usuário está criando um tópico ou uma resposta e calcula o número total de postagens/tópicos do usuário.

A próxima parte é o que me confunde. Se a contagem total de postagens for menor que o limite configurado, criamos o registro que impede que a mensagem educacional seja exibida novamente — e então exibimos a mensagem.

O que estou perdendo aqui?

Por exemplo, se `educate_until_posts` for mantido no valor padrão de 2, eu esperaria que a mensagem fosse exibida nas duas primeiras postagens do usuário.

O usuário começa a criar sua primeira postagem. Não é uma MP e ainda não há um registro UserHistory existente, então a mensagem é exibida — isso faz sentido.

Mas por que o registro UserHistory é criado imediatamente após? Isso não impediria que a mensagem fosse exibida novamente?

Eu esperaria algo mais parecido com isso:

```ruby
  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 (

```

Mas se isso fosse realmente um problema, imagino que os testes relacionados a essa configuração teriam falhado. Como o PR foi mesclado, aparentemente não foi o caso.

Alguém pode me ajudar a entender o que estou ignorando aqui?

---

_[View the full topic](https://meta.discourse.org/t/how-does-educate-until-posts-interact-with-the-recent-changes-to-check-education-message/403727)._
