📜  Ruby on Rails迁移(1)

📅  最后修改于: 2023-12-03 15:34:45.628000             🧑  作者: Mango

Ruby on Rails迁移

在 Ruby on Rails 应用程序中,数据库架构是使用迁移来管理的。迁移是一种使用 Ruby 语言编写的类,用于对应用程序的数据库架构进行版本控制,支持添加、修改和删除数据库表、视图和索引等操作。

迁移工作原理

当开发人员在应用程序中创建一个新的数据库迁移时,它会创建一个新的 Ruby 类,该类会被命名为与创建的迁移文件名称对应的 CamelCase 格式的类名。该类必须从 ActiveRecord::Migration 类继承,并包含两个必要方法:up 和 down。

  • up 方法:up 方法用于创建或修改数据库对象。例如,在一个新的迁移中,开发人员可以在 up 方法中创建一个名为 articles 的新表。

  • down 方法:down 方法用于回滚 up 方法创建的任何更改。例如,在 up 方法中创建了名为 articles 的新表后,开发人员可以在 down 方法中删除该表。

也就是说,如果开发人员已创建了一个名为 articles 的新表,在应用程序中启动了该迁移后,如果需要恢复先前的状态,可以通过运行 "rake db:rollback" 命令,回滚上一个迁移。

迁移的生命周期

在 ActiveRecord 中,每个数据库迁移都有一个生命周期,其包括以下四个事件:

  1. 在模型类中创建迁移:创建并保存迁移的 Ruby 类文件。

  2. 在应用程序中运行该迁移:运行 "rake db:migrate" 命令,创建数据库对象并保存更改。

  3. 回滚该迁移:运行 "rake db:rollback" 命令,回滚先前创建的数据库对象并撤销更改。

  4. 运行 "rake db:migrate" 命令回到迁移前的状态。

迁移的生成和使用
创建迁移

在 Rails 中,使用以下命令生成一个新的迁移:

$ rails generate migration AddTitleToArticle title:string

该命令将生成一个名为 "add_title_to_article.rb" 的新的数据库迁移文件,其代码内容如下所示:

class AddTitleToArticle < ActiveRecord::Migration[5.2]
  def change
    add_column :articles, :title, :string
  end
end

在迁移文件中,开发人员可以使用 ActiveRecord::Migration 类中提供的方法来修改应用程序的数据库架构。例如,在上面的例子中,开发人员创建了一个名为 "AddTitleToArticle" 的迁移,该迁移使用 change 方法添加了一个名为 "title" 的新列到 "articles" 表中。

运行迁移

启动迁移是通过运行 "rake db:migrate" 命令来完成的。该命令会自动检查已有的迁移,并将其记录在项目中的 migrations 表格中。只有当迁移文件尚未在 migrations 表中记录过时,该命令才会使用 ActiveRecord::Migration 类中的 up 方法来执行迁移。

回滚迁移

使用 "rake db:rollback" 命令可以回滚上一个迁移。该命令通过将电视剧记录在与上一个迁移文件的记录相同的 migrations 表中来恢复应用程序的状态。然后,该命令使用 ActiveRecord::Migration 中的 down 方法来回滚上一个迁移。简而言之,该命令将使用 down 方法来逆转迁移文件中定义的所有表更改。

更改迁移

如果需要修改迁移文件,开发人员可以编辑迁移文件,并使用 "rake db:rollback" 命令回滚上一个迁移,以便可以重新运行已经修改过的迁移文件。如果在更改迁移文件后,已经运行了新的迁移,那么开发人员需要创建一个新的迁移文件来记录更改。

总结

在 Ruby on Rails 中,迁移是一种用于管理数据库架构的机制,支持添加、修改和删除数据表、视图和索引等操作。迁移生命周期包括数据库迁移的生成、迁移文件的编写、迁移的运行和迁移的回滚。要在 Rails 中创建一个新的迁移,开发人员可以编辑应用程序中的模型,并使用 "rake db:migrate" 命令来启动迁移。如果需要回滚先前的修改,开发人员可以使用 "rake db:rollback" 命令回滚先前运行的迁移文件。