Same model over multiple databases problem


I run many gameservers (about 10), each gameserver has a different
database and all gameserver’s databases has the table “players” which
is associated to the model Player. So every time I want to work with
the Player model I need connect to a different database depending on
which gameserver I am working on.

My problem is that I need to make rails choose which database to use
before creating/loading the model Player. I know which database to use
because there is a central database with the table players_map that
has the name of all players and tells me which gameserver database
that player is.

So in resume, any ideas how can I make rails to select the database
connection before working with a model?

Eduardo Bart

database yml:

adapter: oracle
database: ext_db
username: ext_user
password: ext_password
host: ext_host


establish_connection :external_db

You didn’t get it.

If a make a model like:

class Player < ActiveRecord::Base
establish_connection :gameserver1_database


Then every Player model will connect to gameserver1_database and
retrieve only player from there:
@player = Player.find(:first)

What I want is something more flexible that allows me to select which
database to use, like this fake code:
@player = Player.find(:first, :database => :gameserver1_database)

Ya I thought about it after I sent it here you go:

look at the bottom: