Разработано в ходе прохождения курса "Основы Rails" в online-школе "Thinknetica"
Пользователи выбирают категорию, уровень сложности и проходят тест за время, получая установленные администратором награды. Механизм определения полученных наград использует принцип единственной обязанности. Попытки и прогресс сохраняются.
Test – множество вопросов объединённых одной тематикой и принадлежащих этому тесту.
Question – вопросы принадлежащие конкретному тесту. Каждый вопрос содержит id правильного ответа.
Answer – ответы принадлежащие определённому вопросу.
User – пользователи приложения (обычные и администраторы).
TestPassage – прогресс прохождения пользователем конкретного теста.
Badge – награды получаемые пользователем за прохождение тестов. Устанавливаются администратором. Возможны за:
- прохождение всех тестов определённой категории
- прохождение всех тестов определённого уровня сложности
- успешное прохождение теста с первой попытки
Механизм определения получения наград использует принцип единой обязанности
Gist – разработанный с применением внешнего API сервис для создания GithubGists. Если пользователь не знает ответа на текущий вопрос – он может создать gist содержащий текст вопроса и получить ссылку на него. Администратор может просматривать все созданные gists.
##Основной функционал
- Создание тестов и управление ими:
- Добавление вопросов к тестам
- Добавление ответов к вопросам
- CRUD тестов/вопросов/ответов
- Установка таймера(время за которое нужно пройти тест). При истечении времени таймера тест считается не пройденным.
- Создание наград и определение условий их получения
- Аутентификация пользователей
- Базовые разграничения прав доступа (User/Admin)
- Прохождение тестов
- Просмотр полученных наград на странице своего профиля
- Сохранение прогресса прохождения теста, с возможностью вернуться к тесту с текущего не отвеченного вопроса (если не истёк таймер)
- Возможность создать GithubGist с непонятным вопросом
-
Ruby version ruby 3.0.2
-
Rails version Rails 6.1.4