ActiveRecord 如何连接多个数据库

前言:

      Rails一个重要的帮手就是ActiveRecord,它帮助我们快捷得操作各种数据库,有的时候,我们需要操作的数据库表,并不在同一个数据库中(这可能是项目历史原因,个人觉得除非特殊情况,很少会做出将表分散到多库设计),这个时候就需要ActiveRecord去连接多个数据库了。

      1. ActiveRecord肯定是支持连接多库功能的

      2. ActiveRecord对每一个数据库都会维护多个连接,并存放在连接池中(以前有朋友问过我,“连接多库,连接池没问题吧?”,当然没问题了,ActiveRecord对连接池的管理是OK的)

具体操作:

1. 大家都知道,ActiveRecord会默认读取database.yml的配置信息,我们需要增加一些,加入多个数据库的配置信息,以下只是提供一个demo,具体配置自己需要调整

ActiveRecord 如何连接多个数据库_第1张图片

2. ActiveRecord操作数据库表,是需要定义相应的Model的,这里也是一样,不过我们需要连接多个数据库,所以,我们的Model需要显示指定连接所用的配置,不过为了简化操作,我们为需要连接其他数据库的Model,定义一个父类

ActiveRecord 如何连接多个数据库_第2张图片

establish_connection() 其实可以接收一个hash作为参数,参数内容就是database.yml里某一个库的配置信息,不过由于ActiveRecord默认读取database.yml,所以这里只需要指定database.yml中的一个配置名,以symbol类型传入,就能自动获取该配置下的信息(直接传Hash对象也是OK的,不过略麻烦)

3. 我们随便定义一个Model,去继承某一个父类,就可以正常操作其他数据库的表了

ActiveRecord 如何连接多个数据库_第3张图片

好了,多库的连接配置就记录到这里!!

你可能感兴趣的:(ActiveRecord 如何连接多个数据库)