Pour un site d'examen sur lesquels je travaille, Ive a obtenu les modèles suivants:Coincé avec requête dans Rails3: Obtenir une page de résultats après un examen
class Exam < ActiveRecord::Base
belongs_to :user
#has_many :categories
has_many :questions, :through => :attempts
has_many :attempts
end
class Attempt < ActiveRecord::Base
belongs_to :exam
belongs_to :question
belongs_to :answer
belongs_to :user
end
class Question < ActiveRecord::Base
belongs_to :user
belongs_to :category
has_many :answers, :dependent => :destroy
has_many :exams
has_many :attempts
end
class Category < ActiveRecord::Base
acts_as_nested_set
has_many :questions, :dependent => :destroy
has_many :subcategories, :class_name => 'Category', :foreign_key => 'parent_id'
belongs_to :parent, :class_name => 'Category', :foreign_key => 'parent_id'
end
La raison pour le modèle «tentatives est que chaque la tentative est en train d'être sauvegardée, donc nous savons si l'étudiant change sa réponse plus tard. Ainsi, dans une configuration standard: la catégorie est sélectionnée, l'examen démarre, des questions apparaissent & chaque tentative de réponse à une question est automatiquement enregistrée. (tout cela fonctionne .., MAIS :) Maintenant, je voudrais voir les résultats dans une fenêtre suivante:
Objectif: Obtenir une liste avec des questions, avec le résultat d'être correct ou pas (la dernière tentative compte):
Mon départ:
e = Exam.last
e.questions => this produces a list of questions, but how to see if these are correctly answered/not?
Comme vous pouvez le voir, im coincé assez vite :) Toutes les idées? THX!
thx pour la réponse! Rockz, mais: il me donnera toutes les questions. Y compris les doublons. Im essayant @ e.questions.group (: question_id) .each, mais cela ne fonctionne pas non plus. Des idées? –
ok, maintenant j'ai obtenu: e.questions.find (: all,: select => "questions.id",: groupe => "questions.id"). Chaque {| q | met "# {q.id} - # {q.attempts.last.correct}"} - si vous avez une solution plus propre et plus rails3, s'il vous plaît faites le moi savoir! –