2016-05-17 23 views
1

我创建了一个名为“property”的表,但我没有迁移它。然后我想删除表格,所以当我做了rake db:rollback如下。我以前创建的表格,我根本不想删除,现在恢复。我应该如何恢复我的模型“评论”,而不是删除最后一个模型“属性”。Rails:回滚错误

一些评论说做“重做”或“运行迁移”,但如果我做了rake db:migrate,我觉得它会永久删除评论模型。我错了吗?什么是正确的解决方案来带回我的评论模型?

:~/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) ========================== 

回答

0

一旦你完成了rake db:rollback,你已经对数据库进行了修改。在这种情况下,它会删除您的comments表,如输出中所示:drop_table(:comments)。数据已经消失了。我们都曾经在那里至少一次。

运行rake db:migrate将恢复表结构的comments,但不包含其中的数据。在这种情况下,如果您想要确定新表property未迁移,则可以运行rake db:migrate以运行所有新迁移,然后rake db:rollback一次以回滚迁移property

+0

谢谢你的回答!无论如何要恢复评论表中的数据吗? – user6211530

+0

不幸的是,没有一个标准的方法。如果你有你的日志文件,你可以从那里重新生成'comments'的内容,但是它需要一些搜索。您需要查找POST到您的'/ comments'路由(或'/ parent/comments',如果它是嵌套的)的日志条目并查找操作的'params'哈希值。 –

+0

听起来真的很难..但非常感谢信息〜! – user6211530