Rails - Verschachtelte Includes in Active Records?
166
Ich habe eine Liste von Ereignissen, die ich abrufe. Ich versuche, jeden Benutzer, der diesem Ereignis zugeordnet ist, und jedes Profil, das jedem Benutzer zugeordnet ist, einzubeziehen. Die Benutzer werden eingeschlossen, aber nicht ihre Profile.
Ich glaube, das Folgende sollte für Sie funktionieren.
Event.includes(users::profile)
Wenn Sie eine Zuordnung (wir nennen sie C) einer bereits enthaltenen Zuordnung (wir nennen sie B) einschließen möchten, verwenden Sie die obige Syntax. Wenn Sie jedoch auch D einschließen möchten, das auch eine Zuordnung von B ist, verwenden Sie das Array wie im Beispiel im Rails-Handbuch angegeben .
A.includes(bees:[:cees,:dees])
Sie können solche Includes weiterhin verschachteln (falls dies tatsächlich erforderlich ist). Angenommen, A ist auch mit Z verbunden, und C ist mit E und F verbunden.
Wie würden Sie Bedingungen für die enthaltenen Module hinzufügen? :)
Arup Rakshit
1
Wie füge ich dort eine Bestellung hinzu?
Florian Widtmann
6
Dies ist eine dieser magischen Antworten, die ich im Abstand von mehreren Jahren gefunden habe und die mir jedes Mal den Arsch retten. So sollten die Dokumente aussehen
Andrew
2
Um diesen Leitfaden zum anstrengendsten zu machen: A.includes( { bees: { cees: {:dees, :ees} } })- für die russische puppenähnliche Konstruktion (dh A enthält b, einschließlich c ... usw.)
A.includes( { bees: { cees: {:dees, :ees} } })
- für die russische puppenähnliche Konstruktion (dh A enthält b, einschließlich c ... usw.)A.includes(bees: :cees).where(bees: { cees: { flagged: false }}).order("a.bees DESC").order("a.cees ASC")
Wenn jemand einen
respond_to
Block ausführt, um verschachtelten JSON zu generieren, können Sie Folgendes tun:quelle
as_json
- sonst wird der JSON-String gerendert.Bitte beziehen Sie sich auf die Lösung von Joe Kennedy.
Hier ist ein besser lesbares Beispiel (für zukünftige mich).
quelle