Active Record Migrations(迁移)
迁移作为文件存储在目录中,每个文件一个 迁移类。文件名的形式是 ,即 UTC 时间戳 标识迁移,后跟下划线,后跟名称 的迁移
bin/rails generate migration AddPartNumberToProducts
这将创建一个适当命名的空迁移:
class AddPartNumberToProducts < ActiveRecord::Migration[7.0]
def change
end
end
这是一些 ActiveRecord 迁移文件中可用的方法的列表以及它们的作用:
-
add_column(table_name, column_name, type, options)
: 向指定的表中添加一个新的列,可以指定列的数据类型和其他选项。 -
add_foreign_key(from_table, to_table, options)
: 向表中添加一个新的外键约束,将其中一个表的列与另一个表的列相关联。 -
add_index(table_name, column_name, options)
: 向指定的表和列添加一个新的索引,可以指定其他选项。 -
add_reference(table_name, ref_name, **options)
: 向指定的表中添加一个新的引用列和一个新的外键约束,用于引用另一个表中的行。 -
add_timestamps(table_name, options)
: 向指定的表中添加created_at
和updated_at
两个时间戳列。 -
change_column_comment(table_name, column_name, comment, options)
: 更改指定列的注释,可以指定其他选项。 -
change_column_default(table_name, column_name, default_or_changes, options)
: 更改指定列的默认值,可以指定其他选项。 -
change_column_null(table_name, column_name, null_or_not, options)
: 更改指定列是否允许为 NULL,可以指定其他选项。 -
change_table_comment(table_name, comment, options)
: 更改指定表的注释,可以指定其他选项。 -
create_join_table(table_1, table_2, options)
: 创建一个用于连接两个表的新表,表名根据命名规则自动生成。 -
create_table(table_name, options)
: 创建一个新的数据库表,可以指定表名和其他选项。 -
disable_extension(extension_name)
: 禁用指定的 PostgreSQL 扩展。 -
drop_join_table(table_1, table_2, options)
: 删除连接两个表的中间表。 -
drop_table(table_name, options)
: 删除指定的数据库表,可以指定其他选项,例如使用块进行更复杂的操作。 -
enable_extension(extension_name)
: 启用指定的 PostgreSQL 扩展。 -
remove_column(table_name, column_name, type, options)
: 从指定的表中删除一个列。 -
remove_foreign_key(table_name, options)
: 从指定的表中删除一个外键约束。 -
remove_index(table_name, column_name, options)
: 从指定的表和列中删除一个索引。 -
remove_reference(table_name, ref_name, options)
: 从指定的表中删除一个引用列和外键约束。 -
remove_timestamps(table_name, options)
: 从指定的表中删除created_at
和updated_at
两个时间戳列。 -
rename_column(table_name, old_name, new_name)
: 重命名指定表的列。 -
rename_index(table_name, old_name, new_name)
: 重命名指定表的索引。 -
rename_table(old_name, new_name)
: 重命名指定的数据库表。
运行迁移
$ bin/rails db:migrate
一个常见的任务是回滚上次迁移。例如,如果制作了 错误并希望纠正它。而不是追踪版本 与可以运行的上一次迁移关联的编号:
bin/rails db:rollback
这将通过还原方法或运行方法来回滚最新的迁移。如果需要撤消 多个迁移,您可以提供一个参数:change``down``STEP
$ bin/rails db:rollback STEP=3
将还原最后 3 次迁移。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类