Действующее здесь правило заключается в том, что пользователи могут награждаться значками за серию 10, 20 и 30. Но пользователь не может быть награжден несколькими значками за одну полосу. Я отслеживаю последовательные победы в пользовательской модели.
Например, если пользователь попадает в 10-ти полоску, ему присваивается значок из 10-ти полос. Если пользователь на 20 полосах, он / она получает значок с 20 полосами. Если пользователь участвует в серии из 30 побед, ему присваивается значок из 30 серий. Пользователю не следует награждать три значка с 10 полосами - только одну полосу с 10 полосами, одну полосу с 20 полосами и одну полосу с 30 полосами.
Кроме того, если пользователь достигает полосы с 40 победами, то ему должен быть присвоен значок с 10 полосами. Если пользователь набирает 50, ему / ей должен быть присвоен значок с 20 полосами. Если пользователь наберет 60, он должен получить 30-полосный значок. Если пользователь набирает 70, он должен получить 10-ю полосу. Я думаю, вы получили образец здесь. 30-полосный трофей - это максимум, который может получить пользователь. Но пользователь может быть в бесконечной серии побед.
def check_win_streak(streak)
badge = 10
while badge < BADGE::MAX_STREAK_BADGE_SIZE do # MAX_STREAK_BADGE_SIZE = 30
if streak < badge then
break
end
if (streak % badge == 0) then
award_streak_badge(badge)
end
badge += 10
end
end