J'ai deux méthodes ici, distinct_question_ids et @correct_on_first attempt. L'objectif est de montrer à l'utilisateur combien de questions à choix multiples distinctes ont reçu une réponse correcte.
Le second me permettra de savoir combien de ces QCM distincts ont reçu une réponse correcte lors de la première tentative. (Un utilisateur peut essayer un QCM plusieurs fois).
Maintenant, lorsqu'un utilisateur répond à des milliers de questions et a des milliers de réponses d'utilisateur, la page pour montrer leur performance prend 30 secondes à une minute à charger. Je pense que c'est dû à la méthode .select, mais je ne sais pas comment remplacer .select sans utiliser .select, puisqu'elle boucle comme .each.
Existe-t-il une méthode qui ne provoque pas N+1 ?
distinct_question_ids = @user.user_answers.includes(:multiple_choice_question).
where(is_correct_answer: true).
distinct.pluck(:multiple_choice_question_id)
@correct_on_first_attempt = distinct_question_ids.select { |qid|
@user.user_answers.
where(multiple_choice_question_id: qid).first.is_correct_answer
}.count