Continuando la discussione da “Thanks for Contributing” Popup in Posts Appearing Even After Limit Passed?:
Ho una domanda su questa modifica. Sento di star trascurando qualcosa o di aver frainteso come dovrebbe funzionare durante i test.
Mi aspetto che il banner educativo appaia nei primi post, con il numero controllato dall’impostazione del sito educate_until_posts. Di default, questo valore è 2.
Per i test, l’ho modificato a 5 solo per essere più sicuro. Tuttavia, il mio utente di test ha visto il messaggio educativo solo una volta.
Ho anche esaminato il codice:
Come ho capito, il metodo esclude prima i messaggi privati e gli utenti che hanno già un record che indica che il messaggio educativo è stato mostrato. Questa parte ha senso per me.
Poi determina se l’utente sta creando un argomento o una risposta e calcola il numero totale di post/argomenti dell’utente.
La parte successiva è quella che mi confonde. Se il conteggio totale dei post è inferiore al limite configurato, creiamo il record che impedisce la visualizzazione del messaggio educativo - e poi mostriamo il messaggio.
Cosa mi sto perdendo qui?
Ad esempio, se educate_until_posts viene lasciato al suo valore predefinito di 2, mi aspetto che il messaggio venga mostrato per i primi due post dell’utente.
L’utente inizia a creare il suo primo post. Non è un messaggio privato e non esiste ancora un record UserHistory, quindi il messaggio viene mostrato - ha senso.
Ma perché il record UserHistory viene creato immediatamente dopo? Questo non impedirebbe al messaggio di essere mostrato di nuovo?
Mi sarei aspettato qualcosa di più simile a questo:
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 (
Ma se questo fosse stato davvero un problema, immagino che i test relativi a quell’impostazione sarebbero falliti. Dato che la PR è stata unita, apparentemente non lo sono stati.
Qualcuno può aiutarmi a capire cosa sto trascurando?
