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.