2017-04-18 5 views
0

Ich habe ein Schienenmodell, in dem ich mehrere Datensätze von einem Anruf vom Controller zerstören möchte. Meine Controller-Methode ist so etwas wieLöschen mehrerer Modelle in Schienen

def destroy_multiple 
    Model.destroy_all(params[:id_list]) 
end 

Meine Frage ist, was ist der beste Weg, die IDs einzureichen? Als POST-Anfrage? GET Anfrage? URL-Parameter für eine DELETE-Anfrage? Was ist der beste Weg dies zu tun?

Antwort

2

Sie können es mit POST oder DELETE Anfrage, aber ich würde es tun, wie ein DELETE. Sie können etwas tun:

Model.where(id: params[:id_list]).destroy_all 
+0

Wie sollte ich die Params mit einer Löschanforderung übergeben? als URL-Parameter? – sakurashinken

+0

Ja, sende es als URL-Parameter wie "delete_path (ids_list: [1,2,3])" –

2

Führen Sie die params in der URL, so etwas wie/Modell/destroy_multiple ids = [1,2,3]

dann in der Steuerung:

def destroy_multiple 
    Model.destroy_all(params[:id_list]) 
end 

Aber denken Sie daran:

  • destroy/destroy_all: Die damit verbundenen Aufgaben werden neben diesem Objekt zerstört durch ihre Aufruf der Methode
  • delete/delete_all zerstören: Alle zugehörigen Objekte sofort zerstört werden, ohne Aufruf ihre: zerstören Methode

Wenn Ihr Modell Sie verwenden sollten nicht zugeordnet Datensätze delete_all weil es schneller ist.

Verwandte Themen