Ich erstelle einen neuen Rekord wie folgt:
truck = Truck.create(:name=>name, :user_id=>2)
Meine Datenbank enthält derzeit mehrere tausend Entitäten für LKWs, aber ich habe die IDs mehreren von ihnen so zugewiesen, dass einige IDs verfügbar waren. Was also passiert, ist, dass Rails ein Element mit der ID = 150 erstellt und es funktioniert einwandfrei. Aber dann wird versucht, ein Element zu erstellen und es zuzuweisen. ID = 151, aber diese ID ist möglicherweise bereits vorhanden. Daher wird der folgende Fehler angezeigt:
ActiveRecord::RecordNotUnique (PG::Error: ERROR: duplicate key value violates unique constraint "companies_pkey"
DETAIL: Key (id)=(151) already exists.
Und wenn ich das nächste Mal die Aktion ausführe, wird einfach die ID 152 zugewiesen, die einwandfrei funktioniert, wenn dieser Wert noch nicht vergeben ist. Wie kann ich Rails veranlassen, zu überprüfen, ob eine ID bereits vorhanden ist, bevor sie zugewiesen wird?
Vielen Dank!
BEARBEITEN
Die LKW-ID wird dupliziert. Der Benutzer existiert bereits und ist in diesem Fall eine Konstante. Es ist tatsächlich ein altes Problem, mit dem ich mich befassen muss. Eine Möglichkeit besteht darin, die Tabelle bei let Rails neu zu erstellen und diesmal jede ID automatisch zuzuweisen. Ich fange an zu denken, dass dies die beste Wahl ist, weil ich einige andere Probleme habe, aber die Migration dafür wäre sehr kompliziert, da Truck in so vielen anderen Tabellen ein Fremdschlüssel ist. Gibt es eine einfache Möglichkeit, Rails eine neue Tabelle mit denselben Daten erstellen zu lassen, die bereits unter Truck gespeichert sind, mit automatisch zugewiesenen IDs und unter Beibehaltung aller vorhandenen Beziehungen?