2016-05-17 2 views
1

J'ai créé une table appelée "propriété" et je ne l'ai pas encore migrée. J'ai ensuite voulu supprimer la table, donc quand j'ai fait rake db:rollback comme ci-dessous. Ma table précédemment créée, que je ne voulais pas supprimer du tout, est maintenant annulée. Comment devrais-je relancer mon "commentaire" de modèle et supprimer à la place le dernier modèle "propriété" seulement.Rails: erreur de restauration

Certains commentaires disent "refaire" ou "exécuter migrer" mais si je fais un rake db:migrate, j'ai l'impression qu'il va définitivement supprimer le modèle de commentaire. Ai-je tort? Quelle est la bonne solution pour ramener mon modèle de commentaire?

:~/workspace (revoke) $ rails g model property title address note price$ priceW 
Running via Spring preloader in process 3066 
     invoke active_record 
     create db/migrate/20160517222114_create_properties.rb 
     create app/models/property.rb 
     invoke test_unit 
     create  test/models/property_test.rb 
     create  test/fixtures/properties.yml 
:~/workspace (revoke) $ bundle exec rake db:rollback 
== 20160506122941 CreateComments: reverting =================================== 
-- drop_table(:comments) 
    -> 0.0011s 
== 20160506122941 CreateComments: reverted (0.0096s) ========================== 

Répondre

0

Une fois que vous avez fait le rake db:rollback, vous avez fait un changement à la base de données. Dans ce cas, il a supprimé votre table comments, comme vous pouvez le voir dans la sortie: drop_table(:comments). Les données ont déjà disparu. Nous avons tous été là au moins une fois.

L'exécution rake db:migrate restaurera la structure de la table comments, mais pas les données qu'elle contient. Dans cette situation, si vous souhaitez obtenir au point que votre nouvelle table property n'est pas migrée, vous pouvez exécuter rake db:migrate pour exécuter toutes les nouvelles migrations, puis rake db:rollback une fois pour annuler la migration pour property.

+0

Merci pour votre réponse! Est-il possible de restaurer les données dans le tableau des commentaires? – user6211530

+0

Malheureusement, il n'y a pas de manière standard. Si vous avez vos fichiers journaux, vous pouvez probablement ressusciter le contenu de 'comments' à partir de là, mais cela nécessitera une recherche. Vous voudrez localiser les entrées de journal qui sont POST à ​​votre route '/ comments' (ou'/parent/comments' s'il est imbriqué) et chercher le hachage 'params' pour l'action. –

+0

Cela semble vraiment difficile .. mais merci beaucoup pour l'info ~! – user6211530