Come si scrive nel modo Rails? Ho un modello - Manager. Voglio cancellare tutti i record dai Manager che soddisfano la condizione che manager_level è 5.Rails - Elimina tutti i record che soddisfano una condizione
Grazie.
Come si scrive nel modo Rails? Ho un modello - Manager. Voglio cancellare tutti i record dai Manager che soddisfano la condizione che manager_level è 5.Rails - Elimina tutti i record che soddisfano una condizione
Grazie.
penso che sia meglio utilizzare distruggere anziché eliminare:
Manager.where(:manager_level => 5).destroy_all
Questo dovrebbe funzionare:
Manager.where(:manager_level => 5).delete_all
Nota: Questo non rimuoverà i record dipendenti.
Prova questo:
Manager.delete_all(manager_level: 5)
1. Ho bisogno di usare una variabile per specificare cosa eliminare. 2. La tabella non ha un indice, è una tabella di connettori tra altre 2 tabelle. –
Non ha funzionato per me. Si è verificato un errore a causa dell'integrità referenziale. –
questa dovrebbe essere la risposta accettata, poiché le altre query provano a SELEZIONARE prima di DELETING, causando problemi di prestazioni su set di dati di grandi dimensioni. – toobulkeh
Definitivamente valido, ma tenere a mente: "Distrugge i record che corrispondono alle condizioni istanziando ogni record e chiamando il suo metodo destroy". (http://apidock.com/rails/ActiveRecord/Relation/destroy_all) Questo potrebbe essere molto lento per i set di risultati di grandi dimensioni. –
Sì, stavo pensando di mantenere modelli coerenti e cose del genere. – MurifoX
@MurifoX - Puoi spiegare perché pensi che distruggere sia meglio dell'eliminazione? Non necessariamente in disaccordo, ma contribuirebbe a rendere la risposta più completa. –