Wie schneidet man eine Join-Tabelle in Rails ab?

8

Um eine ActiveRecord-Tabelle zu kürzen, kann ich

machen %Vor%

oder

%Vor%

Wie wird eine categories_post -Tabelle abgeschnitten?

    
maček 09.09.2010, 02:30
quelle

2 Antworten

25

Für ein echtes TRUNCATE können Sie execute verwenden, um das rohe SQL auszuführen.

%Vor%

In Ihren Beispielen mit Modellen wurden keine echten TRUNCATE -Abfragen ausgeführt.

  • destroy_all nicht TRUNCATE eine Tabelle. Es "zerstört die Datensätze, die den Bedingungen entsprechen, indem jeder Datensatz instanziiert und seine Destroy-Methode aufgerufen wird" ( link ).
  • delete_all ist näher - es ignoriert Callbacks - aber immer noch kein TRUNCATE .

Mit der Methode execute werden die Zeilen aus der Datenbank gelöscht, ohne dass Modellinstanzen erstellt werden.

Außerdem wird eine tatsächliche TRUNCATE -Abfrage, zumindest in MySQL, das automatische Inkrement auf dem Primärschlüssel zurücksetzen, so dass der nächste Eintrag, den Sie einfügen, die ID 1 hat.

    
Nathan Long 11.11.2011, 16:15
quelle
0

Ich nehme an, Ihre Join-Tabelle heißt categories_posts. CategoryPost.destroy_all sollte funktionieren, wenn nicht, müssen Sie möglicherweise den Tabellennamen im Modell (CategoryPost)

angeben %Vor%

Aktualisieren, es gibt kein CategoryPost-Modell, daher sollte es erstellt werden:

%Vor%     
jordinl 09.09.2010 07:19
quelle