Продолжение обсуждения из темы “Thanks for Contributing” Popup in Posts Appearing Even After Limit Passed?:
У меня возник вопрос по поводу этого изменения. Мне кажется, что я что-то упускаю или неправильно понимаю, как это должно работать при тестировании.
Я ожидал, что образовательный баннер будет появляться на первых нескольких постах, причём количество постов контролируется настройкой сайта educate_until_posts. По умолчанию это значение равно 2.
Для тестирования я изменил это значение на 5, чтобы перестраховаться. Однако мой тестовый пользователь увидел образовательное сообщение только один раз.
Я также изучил код:
Насколько я понимаю, метод сначала исключает личные сообщения и пользователей, у которых уже есть запись, указывающая на то, что образовательное сообщение было показано. Эта часть для меня понятна.
Затем определяется, создаёт ли пользователь тему или ответ, и вычисляется общее количество постов/тем пользователя.
Следующая часть вызывает у меня недоумение. Если общее количество постов меньше настроенного лимита, мы создаём запись, которая предотвращает повторное показ образовательного сообщения, — и затем отображаем сообщение.
Чего я здесь не понимаю?
Например, если 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 был слит, они, очевидно, прошли.
Может ли кто-то помочь мне понять, что я упускаю?
