2016-07-23 26 views
0

Ich habe 3 ModelleRails 4+ has_many durch eine Beziehung?

1)

User 
has_one :quiz 
**has_many :answers, through :quizzes** 

2)

Quiz 
belongs_to :user 
belongs_to :answer 

3)

Answer 
**has_one :user** 

Ist dies der richtige relationale eingerichtet (in Bezug auf die bolded ** Zeilen)? In Englisch:

Ich möchte, dass der Benutzer ein Quiz hat, während sie mehrere Quizfragen anderer Benutzer mit Antworten beantworten können.

Antwort

1

Ich bin nicht ganz sicher, aber es scheint, das ist, was Sie suchen:

User 
    has_one :quiz 
    has_many :answers 
    has_many :answered_quizzes, through: :answers, source: :quiz 

Quiz 
    belongs_to :user 
    has_many :answers 

Answer 
    belongs_to :quiz 
    belongs_to :user 
+0

Möchten Sie erklären die Zeile mit answered_quizzes Sinn? Ziemlich neu bei Rails & DB, das wäre großartig. Aber ja, das sieht vernünftiger aus. – helpisgood

+0

Das ist nur hinzugefügt, falls Sie in der Zukunft alle Quizfragen, die ein Benutzer beantwortet hat, abrufen möchten. Es verwendet die Antworttabelle als Join-Tabelle zwischen dem Benutzer und dem Quiz. – oreoluwa

Verwandte Themen