0

Mein Seminarmodell hat eine Spalte namens teacher_id. Dieser Teil der Beziehung funktioniert. Ich kann seminar.teacher anrufen, um den Benutzer, der das Seminar unterrichtet, abzurufen.Verbindung von benutzerdefiniertem Namen abrufen

Ich möchte diese Abfrage invertieren können. Mit anderen Worten, ich muss teacher.own_seminars aufrufen, um eine Sammlung aller Seminare zu erhalten, in denen dieser Benutzer als die Lehrer-ID aufgeführt ist. Ich weiß, dass ich Seminar.wenn nennen konnte (: Lehrer => Lehrer), aber das ist klobig. Und ich denke, dass die Leistung auf diese Weise wahrscheinlich schlechter ist.

Hinweis: Einige der Benutzer sind Schüler, die über die Join-Tabelle seminar_user mit dem Seminar verbunden sind, aber ich glaube nicht, dass dies Auswirkungen auf diese Frage hat.

Dies ist das Modell-Setup, das funktioniert noch

class User < ApplicationRecord 
    has_many  :own_seminars, :class_name => "Seminar", foreign_key: 'own_seminar_ids' 
end 



class Seminar < ApplicationRecord 
    belongs_to :teacher, class_name: "User", foreign_key: 'teacher_id' 
end 

Beifall nicht ganz ist!

Antwort

2

In foreign_key Option, geben Sie die Spalte, die, nun, die Fremdschlüssel.

Der Weg has_many funktioniert, versucht es zu erraten, welches der Felder in der referenzierten Entität dem Primärschlüssel dieser Entität entspricht. Standardmäßig ist es user_id (abgeleitet von Name User). Aber da Ihre Spalte eigentlich teacher_id heißt, sollten Sie diese stattdessen verwenden.

has_many :own_seminars, 
     class_name: "Seminar", 
     foreign_key: 'teacher_id' 
Verwandte Themen