ho creare un nuovo record in questo modo:Rails id auto-assegnazione che esiste già
truck = Truck.create(:name=>name, :user_id=>2)
mio database ha attualmente diverse migliaia di soggetti per il camion, ma ho assegnato l'ID di per molti di loro, in un modo che ha lasciato alcuni ID disponibili. Quindi, quello che sta succedendo è che rails crea oggetti con id = 150 e funziona perfettamente. Ma poi si cerca di creare un elemento e assegnarlo id = 151, ma che id potrebbe già esistere, quindi sto vedendo questo errore:
ActiveRecord::RecordNotUnique (PG::Error: ERROR: duplicate key value violates unique constraint "companies_pkey" DETAIL: Key (id)=(151) already exists.
E la prossima volta che eseguire l'azione, lo farà semplicemente assegna l'id 152, che funzionerà correttamente se quel valore non è già stato preso. Come posso ottenere le rotaie per verificare se un ID esiste già prima di assegnarlo?
Grazie!
EDIT
L'id Truck è ciò che viene duplicato. L'utente esiste già ed è una costante in questo caso. In realtà è un problema ereditario che devo affrontare. Un'opzione, è ricreare il tavolo a lasciare che le rotaie assegnino automaticamente ogni id questa volta. Sto iniziando a pensare che questa potrebbe essere la scelta migliore perché ho qualche altro problema, ma la migrazione per farlo sarebbe molto complicata perché Truck è una chiave straniera in tanti altri tavoli. Ci sarebbe un modo semplice per far sì che le rotaie creino una nuova tabella con gli stessi dati già archiviati in Truck, con ID assegnati automaticamente e mantenendo tutte le relazioni esistenti?
perché non stai permettendo alle rotaie di assegnare automaticamente l'ID? Ciò eliminerebbe qualsiasi pericolo di duplicazione - o si tratta di un problema di dati legacy in cui è necessario conservare i vecchi ID? Voglio solo capire un po 'il business case dato che questo non è business-as-usual quando si crea un nuovo oggetto. – MBHNYC
@MBHNYC Penso che D-Nice stia assegnando un user_id durante la creazione della società, e non id come stai pensando (e l'ho fatto anche per un momento). – Anil
Ooo buona cattura Anil - hai perfettamente ragione. @ D-Nice, forse aggiungi la tua migrazione per questo tavolo al tuo post in caso ci sia qualcosa di strano? Tentativo di eliminare quell'utente_id per eliminare la confusione. – MBHNYC