So I have these two databases:
- Website
- Company Intranet
I've built the DB and schema for the company intranet application to
allow certain users (authenticated by AD within my rails app) to input
data that will then be brought over to the first database (company
public-facing website) when a rake task is run. That's the idea,
anyway.
There is going to be a LOT of overlap between the two databases and
their schemas. For example, both databases have a table named
"jobs". So I'm trying to use multiple ActiveRecord connections to
move data from the company intranet database to the website database
without resorting to raw SQL.
So I have a Job class on the company intranet app:
class Job < ActiveRecord::Base
# ...
end
And one for the company website - it's in the company intranet
application, but it's a different model:
class WebsiteJob < ActiveRecord::Base
ActiveRecord::Base.establish_connection("website_#{RAILS_ENV}")
set_table_name "jobs"
# ...
end
As you might be able to see, I'm running into a bit of a collision
here. If I fire up script/console and call:
Job.first
I wind up with a Job from the right database (the "company intranet"
database). However, if I call:
CompanyJob.delete_all # purge stale crap that nobody needs
Job.first
It queries the FIRST database, the one that the CompanyJob model
connects to. It seems to be switching the default connection behind
the scenes and I'm not sure how to override that.
I tried manually assigning the ActiveRecord connection for the right
database to the Job model, but it still exhibits this exact same
behavior.
Does anyone know how I can force Rails to use the remote/other DB ONLY
for that specific model, regardless of the fact that both databases
contain identically named tables (that I'm unable to change)?
Thanks.