- Ein Benutzer kann viele Themen unterrichten, und jedes Thema kann viele Lektionen haben.
- Ein Benutzer kann an Lektionen teilnehmen, die von anderen Benutzern erstellt wurden.
(1) ist ziemlich einfach, und ich setzte es wie folgt:Schienen - mehrere Beziehungen zwischen Modellen
#user.rb
has_many :topics
has_many :lessons, through: :topic
#topic.rb
has_many :lessons
#lesson.rb
belongs_to :topic
belongs_to :user
(2) ist ein many-to-many-Beziehungen, und ich denke, ein Tisch kommen - nennen wir es passt (extra Punkte, die mir helfen, einen besseren Namen zu finden!) - ist erforderlich.
Wenn ich hinzufügen, die folgenden
#user.rb
.
.
has_many :lessons, through: :match
#lesson.rb
.
.
has_many :users, through: :match
#match.rb
belongs_to :lesson
belongs_to :user
Ich denke, ich werde eine Fehlermeldung erhalten, da Rails nicht den Unterschied zwischen den beiden Beziehungen beim Aufruf @ user.lessons bekommen kann, zum Beispiel.
Was kann ein korrekter Ansatz sein?
p.s. Ich sehe, dass es viele ähnliche Fragen gibt, aber ich konnte keine richtige Lösung für mein Problem finden.
danke oreoluwa, Ihre Antwort macht viel Sinn. Ich werde es testen und werde es Sie wissen lassen, aber ich denke es ist der richtige Weg. Danke für den Tipp zur Namensgebung, ich werde deinen Rat befolgen. Das fehlende 's' zu den Themen war ein Tippfehler, aber danke, dass du es aufgezeigt hast :) Wenn ich dann etwas wie lesson.subscribed_users brauche, um die Liste der Abonnenten zu sehen, dann denke ich an 'has_many: subscribed_users, through: user_lessons, source :: Benutzer zu Lektion.RB, richtig? – davideghz
Ich denke schon. Beachten Sie, dass Ihre Quelle "Benutzer" und nicht "Benutzer" sein sollte – oreoluwa