Rails 的数据层核心叫 Active Record。
它不是只有 ORM 这一个词。
它在 Rails 里更像:
城市档案对象
+ 数据库映射层
+ 查询接口
+ 关联关系
+ 验证规则
+ 生命周期钩子先建一个模型:
bin/rails generate model Permit title:string district:string status:string starts_on:date
bin/rails db:migrate会生成类似模型:
class Permit < ApplicationRecord
validates :title, presence: true
validates :district, presence: true
validates :status, inclusion: { in: %w[draft submitted approved rejected] }
end然后你就可以这样用:
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")这时候你脑子里应该形成:
Permit 不是“表的替身”
Permit 是“施工许可”这个业务对象数据库里是一行记录。
Ruby 里是一个对象。
Active Record 负责两边翻译。
这就是为什么 Rails 的代码经常读起来像业务语言,而不是底层 SQL 拼接。