2017-06-10 3 views
0

Auf der Suche nach ein wenig Hilfe bei Schienen Verbände. Ich habe drei Models. Benutzer, Teilnehmer und Besprechung und ich möchte Benutzer, die an Besprechungen teilnehmen, basierend auf ihren Rollen (die dem Teilnehmermodell entsprechen) zurückgeben. Ich kann jedoch nicht herausfinden, wie der Benutzer mit einer WHERE-Klausel zurückgegeben wird.Schienen Modell Assoziationen mit has_many, through, class_name und where Klausel

Mein Code zur Zeit kehrt die Attendee und dann nachschauen ich das User Objekt, aber ich würde es lieben, wenn ich da Art und Weise war ich könnte es die User Objekt machen zurückzukehren, ohne es bis nach dem Aufruf suchen zu müssen.

class Meeting 

    has_one :owner, -> { where role: 'owner' }, class_name: 'Attendee' 
    has_one :mentor, -> { where role: 'mentor' }, class_name: 'Attendee' 
    has_many :mentees, -> { where role: 'mentee' }, class_name: 'Attendee' 

end 

Die anderen Verbände ich habe, sind wie folgt

has_many :users, through: :attendees 
    has_many :attendees, dependent: :destroy 

ist das möglich? Jede Eingabe wird sehr geschätzt.

Antwort

0

Ich bin mir nicht sicher, ob ich dich richtig verstanden habe. Hast du das versucht und brauchst du das?

class Meeting 
    has_one :owner, -> { where role: 'owner' }, class_name: 'Attendee' 
    has_one :mentor, -> { where role: 'mentor' }, class_name: 'Attendee' 
    has_many :mentees, -> { where role: 'mentee' }, class_name: 'Attendee' 

    has_one :owner_user, through: :owner, source: :user 
    has_one :mentor_user, through: :mentor, source: :user 
    has_many :mentees_users, through: :mentees, source: :user 
end 
+1

Dank Chumakoff, die Dinge nicht wissen, arbeitete wie das! Es fehlte nur eine Sache am Ende jeder Zeile 'source:: user' –

Verwandte Themen