# Multiple database connections

**URL:** <https://www.ruby-forum.com/t/multiple-database-connections/166976>\
**Category:** Ruby\
**Created:** [May 1, 2009, 5:11pm UTC](https://www.ruby-forum.com/t/multiple-database-connections/166976 "2009-05-01T17:11:33Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jameslabocki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ad7895/32.png) [@jameslabocki](https://www.ruby-forum.com/u/jameslabocki)\
**Post date:** [May 1, 2009, 5:11pm UTC](https://www.ruby-forum.com/t/multiple-database-connections/166976/1 "2009-05-01T17:11:33Z")

</div>

A quick question:

Say my project needs to connect to a second database, Users stored in  
one db and data in another, How would I configure my projects  
database.yml?

Thanks for the help.

---

<div class="post-metadata">

**Author:** ![jameslabocki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ad7895/32.png) [@jameslabocki](https://www.ruby-forum.com/u/jameslabocki)\
**Post date:** [May 2, 2009, 6:24am UTC](https://www.ruby-forum.com/t/multiple-database-connections/166976/2 "2009-05-02T06:24:54Z")

</div>

James Lopes wrote:

> A quick question:
> 
> Say my project needs to connect to a second database, Users stored in  
> one db and data in another, How would I configure my projects  
> database.yml?
> 
> Thanks for the help.

Hi ,  
You can put one more database entry in either the development,  
test or production.

---

<div class="post-metadata">

**Author:** ![jameslabocki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ad7895/32.png) [@jameslabocki](https://www.ruby-forum.com/u/jameslabocki)\
**Post date:** [May 3, 2009, 5:43am UTC](https://www.ruby-forum.com/t/multiple-database-connections/166976/3 "2009-05-03T05:43:20Z")

</div>

I used a multi-magic (think that was the spelling) gem a while back,  
worked  
well as a standalone & w/ rails.  
Good luck

---

<div class="post-metadata">

**Author:** ![jameslabocki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ad7895/32.png) [@jameslabocki](https://www.ruby-forum.com/u/jameslabocki)\
**Post date:** [May 3, 2009, 3:11am UTC](https://www.ruby-forum.com/t/multiple-database-connections/166976/4 "2009-05-03T03:11:07Z")

</div>

On May 2, 12:24 am, Loga G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hi ,  
> You can put one more database entry in either the development,  
> test or production.

First, this is a Rails question, so it is best asked on the Rails  
list.  
Secondly, the above advice is incorrect, which I guess proves the  
first point. Each entry in database.yml is a connection. You can  
create additional connections. See  
[http://pullmonkey.com/2008/4/21/ruby-on-rails-multiple-database-connections](http://pullmonkey.com/2008/4/21/ruby-on-rails-multiple-database-connections)

– Mark.

---

<div class="post-metadata">

**Author:** ![jameslabocki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ad7895/32.png) [@jameslabocki](https://www.ruby-forum.com/u/jameslabocki)\
**Post date:** [May 3, 2009, 9:44pm UTC](https://www.ruby-forum.com/t/multiple-database-connections/166976/5 "2009-05-03T21:44:43Z")

</div>

On Sat, May 2, 2009 at 9:10 PM, Mark T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Hi ,  
> > You can put one more database entry in either the development,  
> > test or production.
> 
> First, this is a Rails question, so it is best asked on the Rails  
> list.  
> Secondly, the above advice is incorrect, which I guess proves the  
> first point. Each entry in database.yml is a connection. You can  
> create additional connections. See  
> [http://pullmonkey.com/2008/4/21/ruby-on-rails-multiple-database-connections](http://pullmonkey.com/2008/4/21/ruby-on-rails-multiple-database-connections)

One thing which the link doesn’t seem to mention is that if you have  
more than one model which needs to be in second database, you can make  
an abstract superclass.

e.g.

class SecondDatabaseBase \< ActiveRecord::Base  
self.abstract\_class = true  
establish\_connection (“connection\_key”)  
end

where “connection\_key” would be substituted for a key in database.yml,  
possibly computed using RAILS\_ENV.

Then just make models which are in the second database subclasses of  
SecondDatabaseBase instead of ActiveRecord::Base.

Setting the class attribute abstract\_class to true tells AR that the  
class doesn’t have any instances, but is just providing configuration  
info, methods etc. to any subclasses.

–  
Rick DeNatale

Blog: [http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)  
Twitter: [http://twitter.com/RickDeNatale](http://twitter.com/RickDeNatale)  
WWR: [http://www.workingwithrails.com/person/9021-rick-denatale](http://www.workingwithrails.com/person/9021-rick-denatale)  
LinkedIn: [http://www.linkedin.com/in/rickdenatale](http://www.linkedin.com/in/rickdenatale)
