📅  最后修改于: 2023-12-03 15:34:45.628000             🧑  作者: Mango
在 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 中,每个数据库迁移都有一个生命周期,其包括以下四个事件:
在模型类中创建迁移:创建并保存迁移的 Ruby 类文件。
在应用程序中运行该迁移:运行 "rake db:migrate" 命令,创建数据库对象并保存更改。
回滚该迁移:运行 "rake db:rollback" 命令,回滚先前创建的数据库对象并撤销更改。
运行 "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" 命令回滚先前运行的迁移文件。