Wie schreibe ich diese SQL in Metawhere?
-
27-10-2019 - |
Frage
Wie würde ich diese Abfrage mit schreiben? Metaker (in Schienen 3)?
SELECT "users".* FROM "users"
INNER JOIN "friendships" friends
ON "users"."id" = friends."friend_id"
INNER JOIN "friendships" inverse_friends
ON "users"."id" = inverse_friends."user_id"
WHERE friends."user_id" = 4
AND friends."status" = 't'
AND inverse_friends."friend_id" = 4
AND inverse_friends."status" = 't'
Ich versuche, mir eine Methode hinzuzufügenUser
Klasse gerufen buddies
Das wird beide zurückgeben friends
und inverse_friends
davon Railscast über die Selbstreferenzielle Vereinigung.
Ich würde mich über jede Hilfe freuen!
Bearbeiten: Ich möchte in der Lage sein, die zurückgegebene Menge abfragen zu können, so dass ich tun kann:
def is_a_buddy_of?(user)
not self.buddies.where(:friend_id >> user.id).empty?
end
Lösung: Nun, ich habe diese letzte Bearbeitung, ich habe gerade meine geändert is_a_buddy_of?(user)
Methode dazu verwenden die |
Betreiber in meinen bestehenden Assoziationen:
def is_a_buddy_of?(user)
status = false
self.buddies.map do |buddy|
status = true if buddy.id == user.id
end
status
end
Lösung
Warum machen Sie nicht einfach das Folgende in Ihrem Benutzermodell ?:
def buddies
inverse_friends | friends
end
|
ist der Gewerkschaftsbetreiber.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow