全书目录

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

第八章:Model 与 Active Record —— 工程档案对象 + 建材总账 + ORM 翻译官

1 分钟 186 字 第 501 / 962 个阅读单元

Rails 的数据层核心叫 Active Record。

它不是只有 ORM 这一个词。
它在 Rails 里更像:

text
城市档案对象
+ 数据库映射层
+ 查询接口
+ 关联关系
+ 验证规则
+ 生命周期钩子

先建一个模型:

bash
bin/rails generate model Permit title:string district:string status:string starts_on:date
bin/rails db:migrate

会生成类似模型:

ruby
class Permit < ApplicationRecord
  validates :title, presence: true
  validates :district, presence: true
  validates :status, inclusion: { in: %w[draft submitted approved rejected] }
end

然后你就可以这样用:

ruby
permit = Permit.create!(
  title: "旧城道路翻修",
  district: "浦江新区",
  status: "submitted",
  starts_on: Date.new(2026, 4, 1)
)

recent = Permit.order(created_at: :desc).limit(10)
approved = Permit.where(status: "approved")

这时候你脑子里应该形成:

text
Permit 不是“表的替身”
Permit 是“施工许可”这个业务对象

数据库里是一行记录。
Ruby 里是一个对象。
Active Record 负责两边翻译。

这就是为什么 Rails 的代码经常读起来像业务语言,而不是底层 SQL 拼接。