全书目录

第二十八篇:Ruby on Rails 完全指南 —— 城市脚手架工务署宇宙

第十章:Migration —— 蓝图修订令,不是“顺手改个表”

1 分钟 183 字 第 503 / 962 个阅读单元

很多初学者把 migration 理解成“创建表脚本”。
这太浅了。

Migration 更准确的定位是:

text
城市蓝图的版本化修订令

比如生成出来的迁移文件可能长这样:

ruby
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 成为当前城市蓝图快照

要真正把这套脑回路吃透:

text
Model = 业务对象怎么用
Migration = 数据结构怎么变
Schema = 当前城市结构长什么样

这三者不是一回事。