0

Je considère ce un add-on question de sortes au fil ci-dessous: Using join tables in ruby on railsVous cherchez un moyen de suivre l'histoire dans la base de données des rails

Nous avons donc échafauds « étudiant » et « cours » rejoints par un association de plusieurs-à-plusieurs, mais en plus il y a aussi un échafaudage 'Semester' et ce que je souhaite faire est, pour chaque étudiant qui est ajouté à un cours, que l'application recherche des itérations précédentes du même cours à travers le passé semestres, à cela, il est connu combien de fois un étudiant a pris cette classe avant. Je suis un peu confus en ce moment quant à la façon de mettre en œuvre cela, alors j'espérais que quelqu'un pourrait m'aider à cerner la logique et le code que je devrais utiliser.

Certaines hypothèses sous-jacentes, j'ai jusqu'à présent:

  • « Cours » et « semestre » devrait, comme « étudiant » et « Cours », être rejoint par un grand nombre à plusieurs associations (de nombreux cours sont enseignés par semestre, et un cours est enseigné pendant plus d'un semestre).
  • Il devrait y avoir une action (disons get_student) dans le cours pour localiser l'étudiant via student_id. Ce serait le principal domaine que je me gratte la tête quant à ce qu'il faut faire. A quoi ressemblerait cette méthode dans le code?
  • Au sein de la table de jointure étudiant bien sûr, je devrais avoir un attribut « tente » qui incrémente chaque get_student temps trouve ce student_id combiné avec l'course_id qui appelle les method.This serait le mécanisme qui dit en fait combien de fois le cours avait été tenté par l'étudiant.
  • Je me suis d'abord demandé s'il devrait y avoir un contrôleur 'semestre' action pour activer get_student à travers tous les semestres, mais maintenant je suis en pensant que get_student devrait fonctionner correctement sans cela.

Appréciez toute aide que je peux obtenir à ce sujet. Merci.

+0

Alors, avez-vous une mise à jour? –

Répondre

0

Ce n'est pas une bonne réponse, juste commentez. Je voudrais commenter, mais entendre sera plus clair. Je vais mettre à jour pour les autres points. Ceci est juste un commentaire en cours /discussion, pas une réponse.

class Semester < ApplicationRecord 
has_many :courses 
end 

class Course < ApplicationRecord 
has_many :students 
end 

Et semester.courses [0] .students => sorties du tableau des étudiants pour cette

Cela pourrait être la méthode pour calculer le nombre d'étudiants qui a fait ce cours:

def studentForCourse 

#input_params.course_id => course id you are selecting 

semester = Semester.find(input_params) 

semester.courses.each do |course| 
    if course.id = input_params.course_id 
    nstudents = course.students.size 
    end 
end