跳到主要内容

Ruby on Rails Active Record 与数据库迁移

Active Record 是 Rails 的 ORM。ORM 是 Object-Relational Mapping 的缩写,意思是把数据库表和 Ruby 对象关联起来。

Model 和表

class User < ApplicationRecord
end

按照 Rails 约定,User model 默认对应数据库中的 users 表。

创建记录

User.create(name: "Alice", email: "alice@example.com")

这会尝试向 users 表插入一条记录。

更严谨的写法是检查是否成功:

user = User.new(name: "Alice", email: "alice@example.com")

if user.save
puts "saved"
else
puts user.errors.full_messages
end

查询记录

users = User.where(active: true)
user = User.find(1)

find 找不到记录时会抛出异常。你也可以使用:

user = User.find_by(email: "alice@example.com")

找不到时返回 nil

数据库迁移

迁移用于描述数据库结构变化。示例:

class CreateUsers < ActiveRecord::Migration[8.0]
def change
create_table :users do |t|
t.string :name
t.string :email
t.boolean :active, default: true
t.timestamps
end
end
end

ActiveRecord::Migration[8.0] 中的版本号会随 Rails 项目版本变化,你在实际项目里按生成器生成的内容为准。

运行迁移:

bin/rails db:migrate

小结

Active Record 让你用 Ruby 对象操作数据库,迁移让数据库结构变化可以被版本管理。初学时要区分“数据记录”和“表结构变化”。