---
title: "Ruby on Rails 连接 OceanBase 数据库示例程序 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: Ruby on Rails 连接 OceanBase 数据库示例程序 功能适用性 Ruby on Rails 适用于 OceanBase 数据库 MySQL 模式。 Ruby on Rails 是一个使用 Ruby 语言开发的全栈 Web 应用框架，它内置了 ActiveRecord 作为其 ORM 组件。Activ…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# Ruby on Rails 连接 OceanBase 数据库示例程序

更新时间：2026-04-09 14:12:04

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/680.ecological-integration/200.orms-frameworks/500.ruby/300.rails-connection-oceanbase-database-program.md)

#### 功能适用性

Ruby on Rails 适用于 OceanBase 数据库 MySQL 模式。

Ruby on Rails 是一个使用 Ruby 语言开发的全栈 Web 应用框架，它内置了 ActiveRecord 作为其 ORM 组件。ActiveRecord 提供了以下特性：

- 基于约定的对象关系映射（ORM）
 - 支持模型关联和继承
 - 提供查询接口构建复杂的数据库查询
 - 支持数据库迁移
 - 内置验证和回调机制

本文将介绍如何使用 Ruby on Rails 的 ActiveRecord 连接 OceanBase 数据库，实现基本的数据库操作，包括创建表、插入数据、更新数据和查询数据等。

## 前提条件

- 您已安装 Ruby 3.2.1 或更高版本。
 - 您已安装 Rails 6.0 或更高版本。
 - 您已安装 OceanBase 数据库并且创建了 MySQL 模式租户。
 - 您已获取 OceanBase 数据库连接串。

## 操作步骤

1. 获取 OceanBase 数据库连接串。
 2. 安装 Ruby 和 Rails。
 3. 创建 Rails 应用并配置数据库连接。
 4. 创建模型并实现基本的 CRUD 操作。
 5. 运行程序并验证结果。

### 步骤一：获取 OceanBase 数据库连接串

联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接串。

```shell
obclient -h$host -P$port -u$user_name -p$password -D$database_name

```

**参数说明：**

- `$host`：提供 OceanBase 数据库连接 IP。OceanBase 数据库代理（OceanBase Database Proxy，ODP）连接方式使用的是一个 ODP 地址；直连方式使用的是 OBServer 节点的 IP 地址。
 - `$port`：提供 OceanBase 数据库连接端口。ODP 连接的方式默认是 `2883`，在部署 ODP 时可自定义；直连方式默认是 `2881`，在部署 OceanBase 数据库时可自定义。
 - `$database_name`：需要访问的数据库名称。

  #### 注意

  连接租户的用户需要拥有该数据库的 `CREATE`、`INSERT`、`UPDATE` 和 `SELECT` 权限。更多有关用户权限的信息，请参见 [MySQL 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016100)。
 - `$user_name`：提供租户的连接账户。ODP 连接的常用格式：`用户名@租户名#集群名` 或者 `集群名:租户名:用户名`；直连方式格式：`用户名@租户名`。
 - `$password`：提供账户密码。

更多连接串的信息，请参见 [通过 OBClient 连接 OceanBase 租户](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013251)。

**示例如下：**

```shell
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest

```

### 步骤二：安装 Ruby 和 Rails

1. 安装 Ruby 和 Rails：

   ```bash
   # 安装依赖
   apt install -y curl vim git build-essential libmysqlclient-dev libssl-dev

   # 安装 RVM
   curl -L https://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable

   # 载入 RVM 环境
   source /usr/local/rvm/src/rvm/scripts/rvm

   # 修改 RVM 下载 Ruby 的源为 Ruby China 的镜像
   echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > /usr/local/rvm/src/rvm/config/db

   # 安装 RVM 依赖
   rvm requirements

   # 创建必要的目录
   mkdir -p /usr/local/rvm/src/rvm/rubies
   mkdir -p /usr/local/rvm/src/rvm/archives
   mkdir -p /usr/local/rvm/src/rvm/src/ruby-3.2.1

   # 安装 Ruby 3.2.1
   rvm install 3.2.1
   rvm use 3.2.1 --default

   # 安装 Bundler 和 Rails
   gem install bundler
   gem install rails

   # 验证安装
   rails -v

   # 安装 MySQL2
   gem install mysql2 -v '0.5.6'

   ```
 2. 创建新的 Rails 应用：

   ```bash
   # 创建新的 Rails 应用，跳过测试框架
   rails new oceanbase_rails --skip-test
   cd oceanbase_rails

   ```
 3. 修改 Gemfile 文件，确保包含 tzinfo-data：

   ```ruby
   gem 'tzinfo-data', platforms: [:ruby]

   ```
 4. 安装依赖：

   ```bash
   bundle install

   ```

### 步骤三：创建模型并实现 CRUD 操作

1. 创建用户模型 `app/models/user.rb`：

   ```ruby
   class User < ApplicationRecord
     validates :username, presence: true
     validates :email, presence: true, uniqueness: true
     validates :age, numericality: { only_integer: true, allow_nil: true }
   end

   ```
 2. 创建控制器 `app/controllers/users_controller.rb` 实现 CRUD 操作：

   ```ruby
   class UsersController < ApplicationController
     # 获取所有用户
     def index
       @users = User.all
       render json: @users
     end

   #临时禁用 CSRF 验证
   skip_before_action :verify_authenticity_token, if: :json_request?

     # 创建新用户
     def create
       @user = User.new(user_params)
       if @user.save
         render json: @user, status: :created
       else
         render json: @user.errors, status: :unprocessable_entity
       end
     end

     # 获取单个用户
     def show
       @user = User.find(params[:id])
       render json: @user
     rescue ActiveRecord::RecordNotFound
       render json: { error: 'User not found' }, status: :not_found
     end

     # 更新用户信息
     def update
       @user = User.find(params[:id])
       if @user.update(user_params)
         render json: @user
       else
         render json: @user.errors, status: :unprocessable_entity
       end
     end

     def json_request?
     request.format.json?
     end

     private

     def user_params
       params.require(:user).permit(:username, :email, :age)
     end
   end

   ```
 3. 配置路由，编辑 `config/routes.rb`：

   ```ruby
   Rails.application.routes.draw do
     resources :users
   end

   ```

### 步骤四：测试 API

1. 启动 Rails 服务器：

   ```bash
   rails server -p 3000

   ```
 2. 使用 curl 或 Postman 测试 API：

   ```bash
   curl -X POST http://localhost:3000/users

   -H "Content-Type: application/json"

   -H "Accept: application/json"

   -d '{"user": {"username":"testuser","email":"test@example.com","age":25}}'

   curl -X PATCH http://localhost:3000/users/1 \
   -H "Content-Type: application/json" \
   -H "Accept: application/json" \
   -d '{"user": {"age":26}}'

   curl -X DELETE http://localhost:3000/users/1

   ```

## 相关文档

- [Rails 指南 - Active Record 基础](https://ruby-china.github.io/rails-guides/active_record_basics.html)
 - [Rails API 文档](https://api.rubyonrails.org/)
 - [Ruby on Rails 入门指南](https://ruby-china.github.io/rails-guides/getting_started.html)
 - [OceanBase 数据库文档](https://www.oceanbase.com/docs/enterprise/oceanbase-database-cn)
 - [Ruby 官方文档](https://www.ruby-lang.org/zh_cn/documentation/)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
