很多初学者把 migration 理解成“创建表脚本”。
这太浅了。
Migration 更准确的定位是:
城市蓝图的版本化修订令比如生成出来的迁移文件可能长这样:
class CreatePermits < ActiveRecord::Migration[8.1]
def change
create_table :permits do |t|
t.string :title, null: false
t.string :district, null: false
t.string :status, null: false, default: "draft"
t.date :starts_on
t.timestamps
end
end
end它的价值不只是“把表建出来”,而是:
- 数据结构变化进入版本管理
- 团队成员可以同步重建
- 测试环境、开发环境、生产环境有统一演进历史
db/schema.rb成为当前城市蓝图快照
要真正把这套脑回路吃透:
Model = 业务对象怎么用
Migration = 数据结构怎么变
Schema = 当前城市结构长什么样这三者不是一回事。