前言:
Rails一个重要的帮手就是ActiveRecord,它帮助我们快捷得操作各种数据库,有的时候,我们需要操作的数据库表,并不在同一个数据库中(这可能是项目历史原因,个人觉得除非特殊情况,很少会做出将表分散到多库设计),这个时候就需要ActiveRecord去连接多个数据库了。
1. ActiveRecord肯定是支持连接多库功能的
2. ActiveRecord对每一个数据库都会维护多个连接,并存放在连接池中(以前有朋友问过我,“连接多库,连接池没问题吧?”,当然没问题了,ActiveRecord对连接池的管理是OK的)
具体操作:
1. 大家都知道,ActiveRecord会默认读取database.yml的配置信息,我们需要增加一些,加入多个数据库的配置信息,以下只是提供一个demo,具体配置自己需要调整
2. ActiveRecord操作数据库表,是需要定义相应的Model的,这里也是一样,不过我们需要连接多个数据库,所以,我们的Model需要显示指定连接所用的配置,不过为了简化操作,我们为需要连接其他数据库的Model,定义一个父类
establish_connection() 其实可以接收一个hash作为参数,参数内容就是database.yml里某一个库的配置信息,不过由于ActiveRecord默认读取database.yml,所以这里只需要指定database.yml中的一个配置名,以symbol类型传入,就能自动获取该配置下的信息(直接传Hash对象也是OK的,不过略麻烦)
3. 我们随便定义一个Model,去继承某一个父类,就可以正常操作其他数据库的表了
好了,多库的连接配置就记录到这里!!