Es ist destroy
und destroy_all
Methoden, wie
user.destroy
User.find(15).destroy
User.destroy(15)
User.where(age: 20).destroy_all
User.destroy_all(age: 20)
Alternativ können Sie verwenden delete
und delete_all
welche nicht erzwingen :before_destroy
und :after_destroy
Rückrufe oder alle abhängigen Assoziation Optionen.
User.delete_all(condition: 'value')
Mit dieser Option können Sie Datensätze ohne Primärschlüssel löschen
Hinweis : Aus dem Kommentar von @ hammady user.destroy
geht nicht hervor, wenn das Benutzermodell keinen Primärschlüssel hat.
Anmerkung 2 : Aus dem Kommentar von @ pavel-chuchuva zu destroy_all
Bedingungen und delete_all
Bedingungen wurde in Rails 5.1 verworfen - siehe guide.rubyonrails.org/5_1_release_notes.html
User.find_by(username:"bob")
ist gut, um den Datensatz zu identifizieren, der ebenfalls zerstört oder gelöscht werden soll.Es gibt
delete
,delete_all
,destroy
, unddestroy_all
.Die Dokumente sind: ältere Dokumente und Rails 3.0.0-Dokumente
delete
instanziiert die Objekte nicht, während dies derdestroy
Fall ist. Im Allgemeinendelete
ist schneller alsdestroy
.quelle
delete
ist schneller, umgeht aber die Rückrufe, die Sie möglicherweise auf dem Modell definiert habenUser.destroy
User.destroy(1)
löscht Benutzer mitid == 1
und:before_destroy
und:after_destroy
Rückrufe treten auf. Zum Beispiel, wenn Sie Datensätze zugeordnet habenNachdem der Benutzer zerstört wurde, werden auch seine Adressen zerstört. Wenn Sie stattdessen die Löschaktion verwenden, werden keine Rückrufe ausgeführt.
User.destroy
,User.delete
User.destroy_all(<conditions>)
oderUser.delete_all(<conditions>)
Hinweis : Benutzer ist eine Klasse und Benutzer ist ein Instanzobjekt
quelle
User.destroy_all()
Rückrufe aus. Bevor also etwas gelöscht wird , werden Datensätze geladen . Es sind zwei SQL-Anweisungen, keine. Abgesehen von den Auswirkungen auf die Leistung hat dies auch Auswirkungen auf die Parallelität. Der sicherere Anruf überspringt Rückrufe.User.delete_all()
gibt nur einen einzigenDELETE FROM...
Befehl aus.Hier ist ein Link zu den Rails-Dokumenten . Er befindet sich in den Grundlagen von Active Record
quelle