tronquer une table ActiveRecord, je peux faireComment tronquer une table de jointure dans des rails?
Category.destroy_all
ou
Post.destroy_all
Comment aborde-t-tronquer une table categories_post
?
tronquer une table ActiveRecord, je peux faireComment tronquer une table de jointure dans des rails?
Category.destroy_all
ou
Post.destroy_all
Comment aborde-t-tronquer une table categories_post
?
Pour un véritable TRUNCATE
, vous pouvez utiliser execute
pour exécuter le SQL brut.
ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")
Vos exemples en utilisant des modèles ne sont pas en train de faire de véritables TRUNCATE
requêtes.
destroy_all
ne pas TRUNCATE
une table. Il "détruit les conditions de correspondance des enregistrements en instanciant chaque enregistrement et en appelant sa méthode de destruction" (link). Plus proche - il ignore les rappels - mais toujours pas TRUNCATE
En utilisant la méthode execute
supprime les lignes de la base de données sans créer des instances de modèle.
En outre, une requête TRUNCATE
réelle, au moins dans MySQL, réinitialisera l'auto-augmentation de la clé primaire, de sorte que l'enregistrement suivant l'insertion aura id 1.
Je suppose que votre table de jointure est appelée categories_posts. CategoryPost.destroy_all devrait fonctionner, sinon, vous devez peut-être indiquer le nom de la table dans le modèle (CategoryPost)
set_table_name "categories_posts"
mise à jour, il n'y a pas un modèle de CategoryPost, il devrait donc être créé:
class CategoryPost < ActiveRecord::Base
set_table_name "categories_posts"
end
tables de jointure ne sont pas modèle associé. par exemple, 'CategoryPost' –
vous pouvez le créer – jordinl