将所有以前的迁移文件保存在rails中的目的是什么?

时间:2014-05-06 01:58:21

标签: ruby-on-rails ruby migration

我假设每当rails应用程序需要构建数据库时,它都会通过按时间戳顺序遍历所有迁移文件来实现。它是否正确?

还是有其他原因吗?

4 个答案:

答案 0 :(得分:9)

否 - 从头开始​​构建数据库时,您应该只使用schema.rb中的模式文件。您可以使用rake db:schema:load

创建数据库架构

保持迁移的关键在于,如果某人检出了您的项目的一个版本,然后一个月后他们想要将其更新到最新版本,他们需要逐步了解如何从数据库结构获取然后到现在的数据库结构 - 不会丢失任何数据。因此,他们可以在这两点之间运行迁移,这将逐步将数据库转换为最新版本。

答案 1 :(得分:0)

您可以安全地删除它们。如果这样做,您需要擦除数据库并重新开始,可以使用rake db:schema:load重新创建数据库。

答案 2 :(得分:0)

除了上述原因之外,它还可以帮助您通过rake db:rollback STEP=1阅读documentation

指定要回滚的迁移版本

答案 3 :(得分:0)

迁移文件为您提供了使用db&当

如果您将应用程序移动到另一台主机,它可以帮助您重建数据库,确定问题出现的位置,并且通常会为您提供更加强大的填充方式。随着时间的推移进化数据库

来自migrations documentation

  

迁移是更改数据库架构的便捷方式   时间以一致和简单的方式。他们使用Ruby DSL   不必手动编写SQL,允许您的架构和更改   是数据库独立的。

     

您可以将每次迁移视为一个新的版本'的   数据库。架构开始时没有任何内容和每次迁移   修改它以添加或删除表,列或条目。活性   Record知道如何在此时间轴上更新您的架构   它从历史上的任何一点到最新版本。   Active Record还将更新您的db / schema.rb文件以匹配   最新的数据库结构。

对我来说,它基本上是一种保持数据库结构正确构建的方法,即使在通过不同服务器迁移时也是如此


<强>答案

要回答您的问题,有number of rake methods you can use to rebuild your db

  
      
  • db:migrate 运行尚未运行的(单个)迁移。
  •   
  • 分贝:创建   创建数据库db:drop删除数据库
  •   
  • <强>分贝:模式:负载   在(现有)数据库中创建表和列   schema.rb

  •   
  • db:setup 执行 db:create db:schema:load db:seed

  •   
  • db:reset 执行 db:drop db:setup

  •   

如果您想从头开始创建数据库,您必须运行rake db:createrake db:migrate和其他人的组合