Je souhaite une migration pour créer un clone d'une table existante en suffixant simplement le nom, y compris tous les index de la table d'origine. Il y a donc une table "snapshots" et je veux créer "snapshots_temp" comme une copie exacte de la table (pas les données, juste le schéma de la table, mais les index inclus).Comment cloner une table de base de données via la migration Rails?
Je pourrais simplement copier et coller le bloc hors du fichier schema.rb et le renommer manuellement.
Mais je ne suis pas sûr au moment où cette migration est appliquée si la définition de schema.rb sera toujours précise. Un autre développeur a peut-être changé la table et je ne veux pas avoir à mettre à jour mon script de migration.
Alors, comment puis-je obtenir le schéma de la table lors de l'exécution? Essentiellement, comment 'rake schema: dump' reverse-engineering la table afin que je puisse faire la même chose dans ma migration? (mais en changeant le nom de la table).
Bon appel. "Utilisez LIKE pour créer une table vide basée sur la définition d'une autre table, y compris les attributs de colonne et les index définis dans la table d'origine" http://dev.mysql.com/doc/refman/5.1/fr/create-table. html –
Fonctionne avec MySQL (et peut-être la plupart des bases de données) mais si vous utilisez Sqlite, cela ne fonctionnera pas. J'ai rencontré ce problème dans l'environnement de développement. La production est bonne (c'est MySQL). – MiniQuark
Super merci. Notez que votre table copiée recevra les index, mais pas les clés étrangères. Vous devrez les recréer séparément. –