Okay, vorausgesetzt, Sie haben die Benutzer A und B, sollten Sie dies nur in der Lage sein zu tun:
Order.where(user: A, target: B)
... vorausgesetzt, Sie Ihre Assoziationen definiert haben, sonst:
Order.where(user_id: A.id, target_id: B.id)
EDIT: Habe gerade deinen Kommentar gesehen. Sie könnten .first
zu einer der obigen Abfragen hinzufügen, nur um die erste Bestellung zu erhalten, wenn Sie das wollten.
EINE ANDERE BEARBEITUNG: Wie ich es verstehe, wenn es jemals eine oder mehrere Ordnungen zwischen A und B (oder B und A) gab, wollen Sie eine von ihnen ergreifen, und es ist Ihnen egal. Sie können dies tun:
(Order.where(user: A, target: B) + Order.where(user: B, target: A)).first
, dass Sie einen Datensatz geben, wenn ein solches vorhanden ist und nil
, wenn es nicht der Fall ist. Raw SQL wäre effizienter:
... aber weniger lesbar, und stellen Sie sicher, es zu testen. Viel Glück!
Ich verstehe nicht, was Sie mit "A -> B" oder "B -> A" meinen, können Sie es anders erklären? – rmosolgo
Vielen Dank für Ihre Antwort. Ich meine, Person A kann Ordnung zu Person B schaffen und umgekehrt. – Vanhensy
Können Sie klarstellen, was Sie mit "Filter Order to Unique Record" meinen? Suchen Sie nach einer Abfrage, die beispielsweise alle Bestellungen von Benutzer A zurückgibt, bei denen das Ziel Benutzer B ist? – jmschles