per troncare una tabella di ActiveRecord, posso fareCome troncare una tabella di join nei binari?
Category.destroy_all
o
Post.destroy_all
Come si fa a troncare una tabella categories_post
?
per troncare una tabella di ActiveRecord, posso fareCome troncare una tabella di join nei binari?
Category.destroy_all
o
Post.destroy_all
Come si fa a troncare una tabella categories_post
?
Per un valore reale TRUNCATE
, è possibile utilizzare execute
per eseguire l'SQL raw.
ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")
I suoi esempi che utilizzano modelli non stavano facendo veri TRUNCATE
query.
destroy_all
non TRUNCATE
un tavolo. "Distrugge i record che corrispondono alle condizioni istanziando ogni record e chiamando il suo metodo destroy" (link).delete_all
è più vicino - ignora le richiamate - ma non è ancora un TRUNCATE
.L'utilizzo del metodo execute
elimina le righe dal database senza creare istanze di modello.
Inoltre, un vero e proprio TRUNCATE
interrogazione, almeno in MySQL, ripristinerà l'auto-incremento sulla chiave primaria, in modo che il prossimo disco si inserisce avrà id 1.
Immagino che la tua tabella di join sia chiamata categories_posts. CategoryPost.destroy_all dovrebbe funzionare, se non, forse è necessario specificare il nome della tabella nel modello (CategoryPost)
set_table_name "categories_posts"
Update, non c'è un modello di CategoryPost, quindi dovrebbe essere creato:
class CategoryPost < ActiveRecord::Base
set_table_name "categories_posts"
end
unire le tabelle non hanno un modello associato. ad esempio, 'CategoryPost' –
puoi crearlo – jordinl