ruby on rails同时连接两个数据库

来源:互联网 发布:淘宝客服务费结算方式 编辑:程序博客网 时间:2024/06/03 23:48

使用 ruby on rails 做项目开发时,有时候需要同时连接两个数据库,没有这样做过的开发人员可能有点困难,其实方法很简单,在这里简单介绍一下,希望能给大家带来帮助。

本次使用的数据库分别为 Mysql DB 和 Oracle DB (两个数据库可以为同一种数据库,方法类似),第一个数据库 Mysql DB 配置文件与单个数据库的项目中的配置文件中相同。下面开始添加第二个数据库 Oracle DB :

1、添加 Oracle DB 配置文件到database.yml文件中。(注:ruby on rails 连接 Oracle DB 时,不同于 Mysql DB ,不可以直接连接, 需要安装一个名为 ruby-oci8 的 gem 包,Mac OS 系统下的安装过程详见:http://blog.csdn.net/kavin_luo/article/details/52610152)

oracle_development: #名字可自定义,但是不能重复。  adapter: oracle_enhanced  username: root  database: TEST  password: root  host: localhost  port: 1521 # Oracle DB 的端口号,如果为 Mysql 则不用写。  encoding: utf8

2、让项目连接第二个数据库 Oracle DB 。

添加文件 lib/external_data.rb

class Test::ExternalData < ActiveRecord::Base #Test为方法名,可自定义  self.abstract_class = true  establish_connection :oracle_development # oracle_development 为database.yml文件中添加的第二个 DB 配置的名字end

3、为第二个 DB 添加 model 。(注:所有的model名字不能重复,包括第一个数据库 Mysql DB 所有的 model )

例如: Oracle DB 中有一张表为 Users .
添加文件 app/models/user.rb

class User < Test::ExternalData #被继承的类名为external_data.rb文件中自定义的类名end

这样就可以了,下面来测试一下。

4、测试第二个数据库 Oracle DB 是否可以使用。

在项目根目录下执行:

bundlerails c 

进入到rails console

1.9.3-p551 :001 > User.first

就能查找到 User 表中的第一条数据了。

0 0