2011-01-13 3 views
2

Ich habe zwei separate Prozesse, von denen jeder über eine eigene Datenbankverbindung verfügt und Produktdatensätze in eine Tabelle einfügt. Bevor ein Prozess ein Produkt in die Tabelle einfügt, prüft es, ob bereits ein Produkt mit den gleichen Eigenschaften existiert. Wenn das Produkt bereits existiert, ändert der Prozess ein Feld und speichert das Produkt. Andernfalls erstellt der Prozess ein neues Produkt.Doppelte Datensätze über mehrere Verbindungen hinweg unter Verwendung von Rails verhindern

Ich wickle die Suche und erstellen in einer Transaktion, aber doppelte Produkte werden immer noch eingefügt, da ActiveRecord Transaktionen nur auf einer einzigen Datenbankverbindung handeln.

Was ist der beste Weg zu verhindern, dass doppelte Produkte über mehrere Datenbankverbindungen mit ActiveRecord und Rails eingefügt werden?

Antwort

1

Sie könnten eine multi-field key in der Tabelle erstellen, die eindeutige Kombinationen dieser Felder erzwingt. Dann kann Ihre App nur nach INSERT-Fehlern in der Datenbank suchen.

+0

Genau, die Datenbank ist hier die einzige Quelle der Wahrheit. Lass * es * entscheiden, ob das einzufügende Produkt eindeutig ist. –

+0

Danke. Das ist es, womit ich vorankomme. –

Verwandte Themen