Правило на работе заключается в том, что пользователям могут быть присвоены значки для полосы 10, 20 и 30. Но пользователь не может быть награжден несколькими значками за ту же полосу. Я отслеживаю достижения consec в пользовательской модели.Как реорганизовать сложную логику с последовательными наборами?
Например, если пользователь попадает в 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