15 数据库基础之生成数据库迁移
在上一章中,我们讨论了如何让 Rails 应用程序与数据库连接。如今,我们开始学习如何使用数据库迁移来管理数据库架构的更改。数据库迁移是 Rails 提供的一种内置功能,可以让我们以版本管理的方式来更新数据库结构。通过使用迁移,我们不仅可以创建和修改数据库表,还可以轻松地回滚到以前的状态,确保我们的数据库管理更加灵活和可靠。
什么是数据库迁移?
数据库迁移是一个版本控制系统,用于记录数据库结构的演变。每个迁移都对应一个数据库操作,如创建表、增加列或修改数据类型。通过迁移,开发者可以轻松地共享和应用这些更改,而不必手动管理 SQL 脚本。
在 Rails 中,迁移以 Ruby 文件的形式存在,通常保存在 db/migrate
目录下。每个迁移都以时间戳开头,例如 20230215123456_create_users.rb
,表明它的创建时间。
生成迁移
要生成一个新的数据库迁移,我们可以使用 Rails 提供的命令行工具。我们以创建一个 users
表为例。可以通过以下命令生成迁移文件:
1 | rails generate migration CreateUsers |
此命令会在 db/migrate
目录下创建一个新的迁移文件,文件名类似于 20230215123456_create_users.rb
。接下来,我们打开这个文件并定义我们要执行的数据库操作。
定义迁移内容
每个迁移文件包含两个主要的方法:change
和 up
/ down
。在本例中,我们将使用 change
方法来创建一个新的用户表。
打开刚生成的迁移文件,内容大致如下:
1 | class CreateUsers < ActiveRecord::Migration[6.0] |
在这个例子中,我们定义了一个 users
表,其中有 name
和 email
两个字符串类型的列,以及两个时间戳字段 created_at
和 updated_at
。t.timestamps
方法会自动添加这两个字段。
运行迁移
定义好迁移后,我们可以通过运行以下命令来执行迁移:
1 | rails db:migrate |
这条命令会根据我们定义的迁移内容更新数据库结构。在成功运行后,可以通过数据库管理工具或 Rails 控制台来查看 users
表。
回滚和再次迁移
如果在执行迁移后想要撤销更改,可以使用以下命令回滚:
1 | rails db:rollback |
这会撤销上一次迁移操作。假如我们需要多次回滚,可以多次执行这个命令;也可以使用 rails db:rollback STEP=n
,其中 n
是步数,这样可以一次性回滚多个迁移。
如果再次运行 rails db:migrate
,迁移会重新应用到数据库中。
结论
通过这个小节,我们已经了解了如何生成和定义数据库迁移,以及如何执行和回滚迁移操作。使用迁移可以显著提升数据库管理的效率,使团队协作更为便捷。
在接下来的章节中,我们将深入了解如何使用 ActiveRecord 进行数据库操作,它是与数据库交互的强大工具,为我们的应用程序提供了一个简洁的接口。整个过程将使我们更好地掌握 Rails 数据库操作的核心概念与技巧。
15 数据库基础之生成数据库迁移