Lesson4

completed task #4
Я понял что тебя волнует чтобы не показывалась сразу таже самая карточка. Но дело в том что:

1. Пользователю так и так нужно будет повторить эту карточку рано или поздно
2. При большом числе карточек вероятность что попадётся таже самая мала
3. В идеале ты должен показывать туже самую карточку до тех пор пока не будет введён правильный перевод.

Учитывая всё это, эти два scope'а не нужны, нужен только один скоуп который будет получать любую случайную карточку, дата пересмотра которой меньше или равна сегодняшней.

И @@counter'ы не нужны, это плохой код (типа глобальных для класса переменных которые используются внутри скоупов). Логика работы этого кода неочевидна.

Если хочешь всё таки сделать так чтобы только что заваленная карточка не выводилась, то используй один скоуп, и в нём реализуй поиск при помощи SQL.