para truncar una tabla de ActiveRecord, puedo hacerCómo truncar una tabla de unión en rieles?
Category.destroy_all
o
Post.destroy_all
¿Cómo hace uno para truncar una tabla categories_post
?
para truncar una tabla de ActiveRecord, puedo hacerCómo truncar una tabla de unión en rieles?
Category.destroy_all
o
Post.destroy_all
¿Cómo hace uno para truncar una tabla categories_post
?
Para un verdadero TRUNCATE
, puede usar execute
para ejecutar el SQL sin formato.
ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")
Sus ejemplos usando modelos no estaban haciendo verdaderos TRUNCATE
consultas.
destroy_all
no TRUNCATE
a table. "Destruye las condiciones de coincidencia de registros instanciando cada registro y llamando a su método de destrucción" (link).delete_all
está más cerca - ignora las devoluciones de llamada - pero todavía no es TRUNCATE
.Al utilizar el método execute
se eliminan las filas de la base de datos sin crear ninguna instancia de modelo.
Además, un TRUNCATE
consulta real, al menos en MySQL, se restablecerá el incremento automático en la clave principal, por lo que el siguiente registro se inserta tendrá Identificación de 1.
Supongo que su tabla de unión se llama categories_posts. CategoryPost.destroy_all debería funcionar, si no, tal vez usted tiene que especificar el nombre de la tabla en el modelo (CategoryPost)
set_table_name "categories_posts"
actualización, no hay un modelo CategoryPost, por lo que debe ser creado:
class CategoryPost < ActiveRecord::Base
set_table_name "categories_posts"
end
unir tablas no tienen una modelo asociado. por ejemplo, 'CategoryPost' –
puede crearlo – jordinl