eine Reihe von Modell-IDs Gegeben:Wie filtert man die Werte einer Modellspalte, die nicht in der Datenbank existieren?
ids = [1, 2, 3]
Wie kann ich ein Array der IDs erhalten, die nicht bereits in der Datenbank vorhanden ist? Ich kann tun:
ids.reject { |id| Model.exists?(id: id) }
aber ich möchte nicht eine separate Datenbankabfrage für jede ID machen. Wie erhalten Sie die nicht vorhandenen IDs in einer einzigen Datenbankabfrage?
Nicht sicher über die RoR-Syntax, aber die SQL-Art, es zu tun ist; Erstellen Sie einen Datensatz mit [1,2,3] und identifizieren Sie dann, welche nicht in der Zieltabelle vorhanden sind ... 'SELECT sample. * FROM (AUSWAHL 1 AS id UNION ALLE AUSWAHL 2 AS id UNION ALLE AUSWAHL 3 AS id) Beispiel LINKER JOIN Ziel ON target.id = Beispiel.ID WHERE Ziel.ID IS NULL' – MatBailie
@MatBailie +1 für die Bereitstellung einer reinen SQL-Lösung –